The libc++ Makefile installs all of the header files under
experimental/*, but doesn't add the respective source files to SRCS.
This means compilation of sources that make use of these classes works,
but linkage fails.
Details
I can now link a piece of software I'm writing that makes use of this
API.
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Errors Severity Location Code Message Error lib/libc++/Makefile: NAME1 Bad Filename - Unit
No Test Coverage - Build Status
Buildable 9415 Build 9873: arc lint + arc unit
Event Timeline
No, not like this, please. The experimental sources are unstable, and there is no guarantee whatsoever that anything in there will stay as it is. This is also why I never added them to our libc++.so, to discourage people from actually using them. I have actively tried to avoid adding the experimental features for now, as I don't think these have a place in our base system. But if there really is some use for them, I will not stand in the way, of course.
Upstream compiles these into a separate libc++experimental.a, so specifically *not* in any shared library. Therefore, to be able to use the experimental features, you will have to pass an additional -lc++experimental option on the link command line, and all experimental features will be statically linked into your application.
If we do this, we should do it in a similar way.