Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

External dependencies used in public headers #7451

Closed
jamiesnape opened this issue Nov 10, 2017 · 9 comments
Closed

External dependencies used in public headers #7451

jamiesnape opened this issue Nov 10, 2017 · 9 comments
Assignees
Labels
component: build system Bazel, CMake, dependencies, memory checkers, linters priority: backlog status: tracker Perpetually open

Comments

@jamiesnape
Copy link
Contributor

jamiesnape commented Nov 10, 2017

Edit: Scroll to the bottom of this page for the most recent list of public header dependencies.


This is the list of external dependencies used directly in public headers as of Nov 6, 2018:

# lcmtypes_bot2_core
<bot_core/atlas_command_t.hpp>
<bot_core/pointcloud_t.hpp>
<bot_core/position_3d_t.hpp>
<bot_core/quaternion_t.hpp>
<bot_core/robot_state_t.hpp>
<bot_core/twist_t.hpp>
<bot_core/vector_3d_t.hpp>

# dreal
<dreal/dreal.h>

# eigen
<Eigen/Core>
<Eigen/Dense>
<Eigen/Eigenvalues>
<Eigen/Geometry>
<Eigen/LU>
<Eigen/SparseCore>
<Eigen/StdVector>
<unsupported/Eigen/AutoDiff>
<unsupported/Eigen/Polynomials>

# fmt
<fmt/format.h>
<fmt/ostream.h>

# com_github_gflags_gflags
<gflags/gflags.h>

# protobuf
<google/protobuf/arena.h>
<google/protobuf/arenastring.h>
<google/protobuf/extension_set.h>
<google/protobuf/generated_enum_reflection.h>
<google/protobuf/generated_message_table_driven.h>
<google/protobuf/generated_message_util.h>
<google/protobuf/inlined_string_field.h>
<google/protobuf/io/coded_stream.h>
<google/protobuf/io/zero_copy_stream_impl.h>
<google/protobuf/message.h>
<google/protobuf/metadata.h>
<google/protobuf/repeated_field.h>
<google/protobuf/stubs/common.h>
<google/protobuf/unknown_field_set.h>

# ignition_math
<ignition/math/Pose3.hh>
<ignition/math/Spline.hh>
<ignition/math/Vector3.hh>

# ignition_rndf
<ignition/rndf/UniqueId.hh>

# lcm
<lcm/lcm_coretypes.h>
<lcm/lcm-cpp.hpp>

# optitrack_driver
<optitrack/optitrack_data_descriptions_t.hpp>
<optitrack/optitrack_frame_t.hpp>

# lcmtypes_robotlocomotion
<robotlocomotion/image_array_t.hpp>
<robotlocomotion/image_t.hpp>
<robotlocomotion/robot_plan_t.hpp>

# spdlog
<spdlog/fmt/ostr.h>
<spdlog/spdlog.h>

# stx
<stx/optional.hpp>

# tinyxml2
<tinyxml2.h>

# vtk
<vtkActor.h>
<vtkAutoInit.h>
<vtkCommand.h>
<vtkImageExport.h>
<vtkNew.h>
<vtkPolyDataAlgorithm.h>
<vtkRenderer.h>
<vtkRenderWindow.h>
<vtkShaderProgram.h>
<vtkSmartPointer.h>
<vtkWindowToImageFilter.h>
@jwnimmer-tri
Copy link
Collaborator

This is great visibility, thanks. I'm thinking we should have more tests like drake/bindings/python/pydrake/test/testCommonInstall.py that acceptance test the installation. Sanity-checking the list of non-Drake includes in Drake headers would be a great one.

@jamiesnape
Copy link
Contributor Author

jamiesnape commented Nov 10, 2017

#7455 adds <sdf/sdf.hh>.

@amcastro-tri
Copy link
Contributor

I don't know if it matters, but <sdf/sdf.hh> was introduced in #6496

@jamiesnape
Copy link
Contributor Author

That is just in an example, so not in a public header.

@jamiesnape jamiesnape changed the title <gtest/gtest.h> is used in public headers External dependencies used in public headers Nov 15, 2017
@EricCousineau-TRI EricCousineau-TRI added the status: tracker Perpetually open label Nov 5, 2018
@jamiesnape
Copy link
Contributor Author

jamiesnape commented Nov 6, 2018

Apparently VTK found its way into public headers, or more precisely I think #9830 directly or indirectly made public some headers that include VTK:

#include <vtkActor.h>
#include <vtkAutoInit.h>
#include <vtkCommand.h>
#include <vtkImageExport.h>
#include <vtkNew.h>
#include <vtkPolyDataAlgorithm.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkShaderProgram.h>
#include <vtkSmartPointer.h>
#include <vtkWindowToImageFilter.h>

@jwnimmer-tri jwnimmer-tri added the component: build system Bazel, CMake, dependencies, memory checkers, linters label Apr 28, 2020
@jwnimmer-tri
Copy link
Collaborator

jwnimmer-tri commented Oct 16, 2020

Here's a brief update as of v0.23.0:

# Unwanted includes (i.e., recent regressions) -- will be fixed in #14221.
<ignition/...>
<fcl/...>

# Built from source.
<fmt/...>
<lcm/...>
<spdlog/...>

# LCM message types.
"bot_core/..."
"optitrack/..."
"robotlocomotion/..."

# Coming from Ubuntu or macOS host system:
<Eigen/...>
<tinyxml2.h>
<yaml-cpp/...>

@jwnimmer-tri
Copy link
Collaborator

jwnimmer-tri commented Jul 24, 2021

Update as of v0.32.0:

# Built from source.
#include <lcm/...>

# LCM message types.
#include <optitrack/...>

# Coming from Ubuntu or macOS host system:
#include <Eigen/...>
#include <fmt/...>     // (built from source on Bionic)
#include <spdlog/...>  // (built from source on Bionic)
#include <tinyxml2.h>
#include <yaml-cpp/yaml.h>

@jwnimmer-tri
Copy link
Collaborator

Update as of v0.34.0:

# Built from source.
#include <lcm/...>

# LCM message types.
#include <optitrack/...>

# Coming from Ubuntu or macOS host system:
#include <Eigen/...>
#include <fmt/...>     // (built from source on Bionic)
#include <spdlog/...>  // (built from source on Bionic)
#include <yaml-cpp/yaml.h>

The only change that tinyxml2.h is no longer in public headers.

@jwnimmer-tri
Copy link
Collaborator

Update as of v1.17.0:

# Built from source.
#include <lcm/...>

# LCM message types.
#include <optitrack/...>

# Coming from Ubuntu or macOS host system:
#include <Eigen/...>
#include <fmt/...>
#include <spdlog/...>

See #19600 for the next planned purge (optitrack messages).

@jwnimmer-tri jwnimmer-tri closed this as not planned Won't fix, can't repro, duplicate, stale Mar 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: build system Bazel, CMake, dependencies, memory checkers, linters priority: backlog status: tracker Perpetually open
Projects
None yet
Development

No branches or pull requests

5 participants