-
Notifications
You must be signed in to change notification settings - Fork 49
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
Make sure to call include_directories()
for all CMake packages
#305
Conversation
Thanks @fbriere. Using your branch, Getting
|
While glibc includes a declaration of `environ` within `unistd.h`, this is not always the case for other libc instances; POSIX states that `environ` "must be declared by the user if it is to be used directly"¹. This fixes a build failure on FreeBSD reported at LubosD#305 (comment) ¹ https://pubs.opengroup.org/onlinepubs/9699919799/
Note that this warning (unique to clang, though I'm somehow unable to trigger it myself) highlights an issue found in commoncpp. Given how that project's development has been stalled for several years, I wouldn't count on it being fixed any time soon. 😏
Funny, I just ran into the very same issue yesterday for a totally unrelated project. (And this time, I actually took the time to figure out what it meant. 😄) I have now submitted a fix with #306. (Note that if you want to test it, you'll probably need to merge both branches at the moment. Or, since #306 only adds a single line, you can insert it yourself manually on top of this branch.) |
On FreeBSD, had to replace Had to add in
It now compiles all the way, but at the linking stage fails with
Linux has the libresolv library but FreeBSD doesn't. The correct fix would probably be to make CMake properly detect if the system has a libresolv library or not. But I don't know how to do this correctly... |
The old `uint` and `ulong` types, although provided for compatibility by glibc, are not always found in other libc instances. This was reported to cause a build failure on FreeBSD¹. ¹ LubosD#305 (comment)
Good catch. I also found some
Better yet, we can just ditch that old LinuxThreads relic and use the standard POSIX non-
Could you try removing both libraries from I suspect that |
When I do that, I get
|
Wait, did the internal First of all, let's check whether or not this is the case:
The output should normally begin with
The (apparently faulty) command used to build the file will be displayed after the
(My initial guess was that maybe |
I spun up a FreeBSD EC2 instance to try and reproduce this, but it compiled just fine. I suspect something went horribly wrong in your build directory; could you try blasting it and starting over from scratch? If the problem persists, I'll need more information in order to recreate the same setup as you are using. |
Ah, so it's not so much a question of Linux/FreeBSD or gcc/Clang, but rather which C++ library is being used: |
Done as #309. |
Started over anew.
Getting
What information would be helpful?
Running that with
That
My system does have:
Could it be that I am missing some dependency which CMake didn't catch? |
`libgsm` is typically installed with a top-level `gsm.h` include file (either as the main file or as a compatibility symlink to `gsm/gsm.h`). If `libgsm` is installed but `WITH_GSM` is disabled, it's possible that this copy will shadow our own when `audio/gsm/src` is being built, depending on how include directories are ordered. This will typically cause a build failure on systems such as FreeBSD, where `/usr/local/include` is inserted early in the list, such as seen in LubosD#305 (comment). (While both copies are almost identical, the original one enforces C linkage, which ours does not.)
Aha! That was the missing piece of the puzzle, and I can now reproduce this after installing What happens is that FreeBSD (only) ships I've submitted a fix for the build failure in #310. I'll later try to figure out a way to properly use the installed library in either scenario. |
Started over anew.
Getting
Thanks a ton @fbriere 👍 |
Done with #312. Compiling on FreeBSD with |
@LubosD: You can now merge this when ready. 😄 |
Closes #304