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
control C++11 and castxml selection #95
Conversation
The logic is wrong. One can enable Cxx11 even with gccxml systems. You just need to look out, to Also I don't see how the c++11 is enabled for the orogen packages. |
Fair enough. So, how far back should we "allow" C++11 ?
Read the PR description.
It either does it directly in its CMake code, or adds it explicitely in the autobuild files. If the package needs C++11, it should ensure that it is built with C++11 no matter what. That's not autoproj's job. |
Getting back on that: I actually believe that trying to officially allow mixed systems like this is a bad idea. It would add complexity on the orogen solution (need one option for the codegen and one for the build) for, as far as I can see, very little benefit - we never officially supported C++11 on 14.04. If one knows what he/she is doing, he/she can forcefully enable cxx11 support by adding |
A lot of external libs switched to Cxx11 now (e.g. URDF). So the question if we allow mixed systems is answered for us : yes. Also I would prefer to switch C++11 on by default, because there is basically no harm in it and as libraries migrate to c++11 in the near future almost all packages will turn on C++11 anyway. The only thing we need to watch out for, is that until the next release, we do not allow C++11 in the base / transport types (at least in the header sections). |
With this PR
I made the careful choice here since I actually see often Rock users still running older ubuntu releases. I don't see any downside in not forcing C++11 down their collective throat, while still migrating the official master to C++11. |
This will lead to annoying build failures... |
Yes. As does 1/2 of the packages because their manifest.xml is not done properly, or because their CMakeLists.txt does not properly list dependencies. The bottom line is that it won't happen overnight. Enabling C++11 to all packages, even the ones you don't control will cause build failures overnight for people using C++98 syntax / features not supported in C++11. |
I don't get your point, you said c++11 is on for 16.04 by default. So they should build. |
Enabling C++11 in autoproij, the cmake macros and/or orogen enables it for everyone and every package. Even the private ones used only on pre-16.04 |
Yes... And people can still 'downgrade' by override if the really need to. Having a different behaviour depending on the ubuntu version is where I see the problem. |
People can still upgrade by override if they really need to ... How is that a point ? Again, a difference in philosophy:
|
This commit enables C++11 and castxml unconditionally on some OSes (for now, ubuntu 16.04), disables them unconditionally on other (OSes where castxml is not available), and offers a choice to the user for the rest.
17bbf33
to
3d010b9
Compare
OK. Removed the automatic setting of C++11 by default on 16.04 onwards, to have the same build environment on <16.04 and >=16.04. Which means that the only thing the PR does now is:
Is that acceptable ? |
yep |
fix installing osg-collada on autoproj 1.x
This commit enables C++11 unconditionally on 16.04,
enables castxml unconditionally on gcc5 OSes (15.10, 16.04)
disables them unconditionally on other (OSes where castxml
is not available), and offers a choice to the user for the rest.
Once the C++11 support is added to orogen, it should be added
to the overrides as well.
Depends on orocos-toolchain/autoproj#24
This "competes" with