OpenDDS is an open source C++ implementation of the Object Management Group (OMG) Data Distribution Service (DDS). OpenDDS also supports Java bindings through JNI.
Since https://github.com/OpenDDS/OpenDDS/pull/4487, CMake requires knowledge of the minimum C++ standard of ACE. It currently uses the ACE version to assume the minimum C++ standard, but the required standard changed in ACE to C++17. To support this correctly in CMake, we could do a version check, but master currently is 7.1.4, the last ACE7 release.
These changes try to compile against ace/Global_Macros.h to get the minimum C++ standard of ACE like how we currently check the compiler default. This will allow us to get any standard ACE requires as long it's a standard we're aware of. We will not need this after https://github.com/OpenDDS/OpenDDS/issues/4578, because CMake can directly tell us what ACE/TAO requires.
These changes still don't cover a case like ACE/TAO 7.1.4, where ACE/TAO was compiled with something other the compiler default or the minimum standard of ACE. CMake can't detect that, so that requires manually setting the standard in either CMake and/or the ACE/TAO build so they match.
Also:
Removed unused ACE/TAO and MPC checkouts in the CMake Android job. They are currently using the CMake default ACE7/TAO3 release. I don't think I did this on purpose. They could be changed to use checkouts, but:
ACE/TAO would need to be checked out twice for both host and target or use the clone tree utility.
Since https://github.com/OpenDDS/OpenDDS/pull/4487, CMake requires knowledge of the minimum C++ standard of ACE. It currently uses the ACE version to assume the minimum C++ standard, but the required standard changed in ACE to C++17. To support this correctly in CMake, we could do a version check, but master currently is 7.1.4, the last ACE7 release.
These changes try to compile against
ace/Global_Macros.h
to get the minimum C++ standard of ACE like how we currently check the compiler default. This will allow us to get any standard ACE requires as long it's a standard we're aware of. We will not need this after https://github.com/OpenDDS/OpenDDS/issues/4578, because CMake can directly tell us what ACE/TAO requires.These changes still don't cover a case like ACE/TAO 7.1.4, where ACE/TAO was compiled with something other the compiler default or the minimum standard of ACE. CMake can't detect that, so that requires manually setting the standard in either CMake and/or the ACE/TAO build so they match.
Also:
__cplusplus
correctly.