Add Proper (Recursive) CMAKE_C_FLAGS Handling #484
Merged
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.
So I had a funny problem with the standard
cmake
build of Bear generating executables with illegal instructions for my (admittedly) aged computer.My base setup was Ubuntu 18.04 with the Ubuntu gcc-11 toolchain installed.
Wonder of wonders, my ancient AMD Barcelona CPU does not have the required instructions for the default codegen options of GCC 11.
I attempted to fix this by specifying
CMAKE_C_FLAGS=-march=native
andCMAKE_CXX_FLAGS=-march=native
, but kept getting illegal instructions being generated.So examining the
CMakeLists.txt
files, I found that althoughCMAKE_CXX_FLAGS
was being respected and passed to the subprojects,CMAKE_C_FLAGS
was not.The patch below is required to properly pass build options to the subprojects.
Happily, now everything works and I can avoid buying a new computer for just a little while longer!