Open iguessthislldo opened 1 month ago
Some more thoughts that would probably need to be addressed regardless of how we do this:
CMakeLists.txt
files so ctest works. This would probably require a lot of help because the difference between how ctest
and auto_run_tests.pl
work is pretty large. This would help a ton with #4579.import_common.cmake
, are we using theirs or are we using ours?tao_idl
, do we use their equivalent functions or our own?ACE::ACE
?imported_common.cmake
.
https://github.com/DOCGroup/ACE_TAO/issues/266 should be considered the upstream issue, but this documents the issue from our perceptive.
Right now, when building OpenDDS with CMake, if you don't pass
OPENDDS_ACE
, it will attempt to download and configure ACE/TAO using MPC (get_ace_tao.cmake, build_ace_tao.cmake, configure_ace_tao.pl). This workaround works in basic cases and I was optimistic about it at first, but every single build parameter has to be translated from CMake to MPC/Make/MSBuild and every platform has to be hardcoded. This caused has problems when the CMake support was developed, specifically trying to make the building of ACE/TAO seamless, and has caused more issues since the CMake support was released (See #4381, #4375, #4478, #4531, #4328).This would also allow allow easy installation of ACE/TAO along side OpenDDS, including on Windows. Right now OpenDDS builds ACE/TAO, but doesn't install it.
The proper solution to these and the inevitable future problems with the current approach is to cut MPC out of the build process entirely and add proper CMake support to ACE/TAO. There's a couple of ways we could go about it:
CMakeLists.txt
were essentially written from scratch. This is possible but daunting for the tests. For ACE/TAO this is daunting for not just the tests, but all the libraries and programs sitting around. This almost certainly not what we're going to do.CMakeLists.txt
files that can be committed.I created a proof of concept of 1 (ACE_TAO, OpenDDS) in order to test what's needed for IDL generation for TAO. This can build a subset of ACE/TAO and OpenDDS needed for the RTPS Devguide example and run it all in less than 45 seconds on my machine. This requires Ninja and has only been tested on Ubuntu.