fix include-ordering on FreeBSD that could cause build issues#1972
Merged
BareosBot merged 3 commits intobareos:masterfrom Oct 2, 2024
Merged
fix include-ordering on FreeBSD that could cause build issues#1972BareosBot merged 3 commits intobareos:masterfrom
BareosBot merged 3 commits intobareos:masterfrom
Conversation
this adds the SYSTEM option to include_directories(/usr/local/include) on FreeBSD. When adding /usr/local/include using include_directories() for FreeBSD, it may be used as the first -I on the compiler's commandline so that system installed headers in /usr/local will be preferred over headers of the libraries we discovered. However, this can vary between translation units, leading to some TUs being compiled with headers from /usr/local/include and some with headers we have bundled. As a result, you may run into all sorts of issues when finally linking TUs that used different versions of a header-only library into a binary. To avoid this, we declare /usr/local/include as a SYSTEM include directory, so CMake will always put it after all non-SYSTEM include directories on the command line and use -isystem, which as a side-effect also silences warnings.
This removes askdir.cc from SDSRCS (i.e. the source files for bareos-sd) as it is already listed in LIBBAREOSSD_SRCS and leads to the TU being linked into the resulting binary twice, which is an ODR violation.
pstorz
approved these changes
Oct 2, 2024
This was referenced Oct 2, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR makes sure /usr/local/include comes after our own include-directories in the include order to fix a problem where header-only libraries could be mixed up between translation units.
It also fixes an ODR violation in the storage daemon.
Please check
If you have any questions or problems, please give a comment in the PR.
Helpful documentation and best practices
Checklist for the reviewer of the PR (will be processed by the Bareos team)
Make sure you check/merge the PR using
devtools/pr-toolto have some simple automated checks run and a proper changelog record added.General
Source code quality