orocos / orocos_kinematics_dynamics

Orocos Kinematics and Dynamics C++ library
671 stars 407 forks source link

Build error on OpenBSD #454

Closed thyssentishman closed 7 months ago

thyssentishman commented 8 months ago

I'm trying to port Orocos KDL to OpenBSD and I'm running into some errors I have no idea how to debug. Below a full build log using gcc. Similar errors are shown when compiling with OpenBSD's clang version 16.0.6, but it's too long to include here.

Any ideas?

gcc version 8.4.0 (GCC):

===> Building from scratch orocos_kinematics_dynamics-1.5.1
===>  Checking files for orocos_kinematics_dynamics-1.5.1
===> orocos_kinematics_dynamics-1.5.1 depends on: gcc-libs->=8,<9 -> gcc-libs-8.4.0p18
===> orocos_kinematics_dynamics-1.5.1 depends on: gcc->=8,<9 -> gcc-8.4.0p18
`/usr/ports/distfiles/orocos_kinematics_dynamics-1.5.1.tar.gz' is up to date.
===> orocos_kinematics_dynamics-1.5.1 depends on: g++->=8,<9 -> g++-8.4.0p18
===> orocos_kinematics_dynamics-1.5.1 depends on: ninja-* -> ninja-1.11.1
===> orocos_kinematics_dynamics-1.5.1 depends on: cmake-* -> cmake-3.27.7v0
>> (SHA256) orocos_kinematics_dynamics-1.5.1.tar.gz: OK
===>  Verifying specs:  estdc++>=19
===>  found estdc++.19.0
===>  Extracting for orocos_kinematics_dynamics-1.5.1
===> orocos_kinematics_dynamics-1.5.1 depends on: g++->=8,<9 -> g++-8.4.0p18
===> orocos_kinematics_dynamics-1.5.1 depends on: gcc-libs->=8,<9 -> gcc-libs-8.4.0p18
===>  Patching for orocos_kinematics_dynamics-1.5.1
===>  Compiler link: gcc -> env  CCACHE_DIR=/usr/ports/pobj/.ccache  ccache /usr/local/bin/egcc
===>  Compiler link: cc -> env  CCACHE_DIR=/usr/ports/pobj/.ccache  ccache /usr/local/bin/egcc
===>  Compiler link: c++ -> env  CCACHE_DIR=/usr/ports/pobj/.ccache  ccache /usr/local/bin/eg++
===>  Compiler link: g++ -> env  CCACHE_DIR=/usr/ports/pobj/.ccache  ccache /usr/local/bin/eg++
===>  Compiler link: clang -> env  CCACHE_DIR=/usr/ports/pobj/.ccache  ccache /usr/bin/clang
===>  Compiler link: clang++ -> env  CCACHE_DIR=/usr/ports/pobj/.ccache  ccache /usr/bin/clang++
===>  Generating configure for orocos_kinematics_dynamics-1.5.1
===>  Verifying specs:  estdc++>=19
===>  found estdc++.19.0
===>  Configuring for orocos_kinematics_dynamics-1.5.1
CMake Deprecation Warning at CMakeLists.txt:4 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- The C compiler identification is GNU 8.4.0
-- The CXX compiler identification is GNU 8.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Orocos KDL version  (1.5.1)
-- Build type set to 'Release' by user.
-- Performing Test HAVE_STL_CONTAINER_INCOMPLETE_TYPES
-- Performing Test HAVE_STL_CONTAINER_INCOMPLETE_TYPES - Success
-- Configuring done (1.7s)
CMake Warning (dev) at src/CMakeLists.txt:58 (ADD_LIBRARY):
  Policy CMP0115 is not set: Source file extensions must be explicit.  Run
  "cmake --help-policy CMP0115" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  File:

    /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/config.h.in
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done (0.0s)
CMake Warning:
  Manually-specified variables were not used by the project:

    CMAKE_ASM_COMPILER_AR
    CMAKE_ASM_COMPILER_RANLIB
    CMAKE_Fortran_COMPILER_AR
    CMAKE_Fortran_COMPILER_RANLIB
    CMAKE_OBJCXX_COMPILER_AR
    CMAKE_OBJCXX_COMPILER_RANLIB
    CMAKE_OBJC_COMPILER_AR
    CMAKE_OBJC_COMPILER_RANLIB

-- Build files have been written to: /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64
===>  Building for orocos_kinematics_dynamics-1.5.1
Change Dir: '/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64'

Run Build Command(s): /usr/local/bin/ninja -v -j 1
[1/68] /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/articulatedbodyinertia.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/articulatedbodyinertia.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/articulatedbodyinertia.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/articulatedbodyinertia.cpp
[2/68] /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/chain.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/chain.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/chain.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chain.cpp
[3/68] /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/chaindynparam.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/chaindynparam.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/chaindynparam.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chaindynparam.cpp
[4/68] /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/chainexternalwrenchestimator.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/chainexternalwrenchestimator.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/chainexternalwrenchestimator.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainexternalwrenchestimator.cpp
[5/68] /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/chainfdsolver_recursive_newton_euler.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/chainfdsolver_recursive_newton_euler.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/chainfdsolver_recursive_newton_euler.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainfdsolver_recursive_newton_euler.cpp
[6/68] /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/chainfksolverpos_recursive.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/chainfksolverpos_recursive.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/chainfksolverpos_recursive.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainfksolverpos_recursive.cpp
[7/68] /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/chainfksolvervel_recursive.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/chainfksolvervel_recursive.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/chainfksolvervel_recursive.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainfksolvervel_recursive.cpp
[8/68] /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/chainhdsolver_vereshchagin.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/chainhdsolver_vereshchagin.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/chainhdsolver_vereshchagin.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainhdsolver_vereshchagin.cpp
[9/68] /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/chainidsolver_recursive_newton_euler.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/chainidsolver_recursive_newton_euler.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/chainidsolver_recursive_newton_euler.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainidsolver_recursive_newton_euler.cpp
[10/68] /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/chainidsolver_vereshchagin.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/chainidsolver_vereshchagin.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/chainidsolver_vereshchagin.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainidsolver_vereshchagin.cpp
[11/68] /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/chainiksolverpos_lma.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/chainiksolverpos_lma.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/chainiksolverpos_lma.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp
FAILED: src/CMakeFiles/orocos-kdl.dir/chainiksolverpos_lma.cpp.o 
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/bin/c++ -Dorocos_kdl_EXPORTS -I/usr/local/include/eigen3 -I/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/src -O2 -pipe -DNDEBUG -fPIC   -I/usr/local/include/eigen3 -MD -MT src/CMakeFiles/orocos-kdl.dir/chainiksolverpos_lma.cpp.o -MF src/CMakeFiles/orocos-kdl.dir/chainiksolverpos_lma.cpp.o.d -o src/CMakeFiles/orocos-kdl.dir/chainiksolverpos_lma.cpp.o -c /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp
In file included from /usr/local/include/c++/8.4.0/cctype:42,
                 from /usr/local/include/c++/8.4.0/bits/localefwd.h:42,
                 from /usr/local/include/c++/8.4.0/string:43,
                 from /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/joint.hpp:26,
                 from /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/segment.hpp:28,
                 from /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chain.hpp:25,
                 from /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolver.hpp:25,
                 from /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.hpp:34,
                 from /usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp:31:
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.hpp:97:40: error: expected ',' or '...' before numeric constant
       const Eigen::Matrix<double,6,1>& _L,
                                        ^~
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp:52:36: error: expected ',' or '...' before numeric constant
   const Eigen::Matrix<double,6,1>& _L,
                                    ^~
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp: In constructor 'KDL::ChainIkSolverPos_LMA::ChainIkSolverPos_LMA(const KDL::Chain&, const Eigen::Matrix<double, 6, 1>&)':
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp:68:10: error: '_maxiter' was not declared in this scope
  maxiter(_maxiter),
          ^~~~~~~~
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp:68:10: note: suggested alternative: 'maxiter'
  maxiter(_maxiter),
          ^~~~~~~~
          maxiter
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp:69:6: error: '_eps' was not declared in this scope
  eps(_eps),
      ^~~~
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp:69:6: note: suggested alternative: 'eps'
  eps(_eps),
      ^~~~
      eps
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp:70:13: error: '_eps_joints' was not declared in this scope
  eps_joints(_eps_joints),
             ^~~~~~~~~~~
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp:70:13: note: suggested alternative: 'eps_joints'
  eps_joints(_eps_joints),
             ^~~~~~~~~~~
             eps_joints
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp:71:7: error: request for member 'cast' in '2', which is of non-class type 'int'
  L(_L.cast<ScalarType>()),
       ^~~~
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp:71:22: error: expected primary-expression before '>' token
  L(_L.cast<ScalarType>()),
                      ^
/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/orocos_kinematics_dynamics-1.5.1/orocos_kdl/src/chainiksolverpos_lma.cpp:71:24: error: expected primary-expression before ')' token
  L(_L.cast<ScalarType>()),
                        ^
ninja: build stopped: subcommand failed.

*** Error 1 in . (/usr/ports/devel/cmake/cmake.port.mk:46 'do-build')
*** Error 2 in . (/usr/ports/infrastructure/mk/bsd.port.mk:3055 '/usr/ports/pobj/orocos_kinematics_dynamics-1.5.1/build-amd64/.build_done')
*** Error 2 in /home/johannes/repos/ports/main/misc/orocos-kdl (/usr/ports/infrastructure/mk/bsd.port.mk:2702 'all')
MatthijsBurgh commented 8 months ago

Maybe ninja is the issue here?

thyssentishman commented 8 months ago

Maybe ninja is the issue here?

I think it's related to the variable naming. Take a look at 3dfxdev/EDGE#29 which seems pretty similar.

MatthijsBurgh commented 8 months ago

Ok, I suggest you make the changes and see whether it fixes the issues. When that is the case, I can consider merging them back.