mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2026-02-01 02:34:41 +03:00
This option is enabled by default and will replace absolute paths of all source directory file paths with relative paths in the compiled binary, if the compiler supports it. Of course, this isn't needed if you compile with all paths removed anyways (e.g. in Release mode). The purpose is to help make builds reproducible and to remove any potentially sensitive information about the user or the user's system from the compiled binary. Both Clang and GCC support -fdebug-prefix-map, -fmacro-prefix-map, and -ffile-prefix-map. In particular, -ffile-prefix-map is just a flag that does both -fdebug-prefix-map and -fmacro-prefix-map. According to https://reproducible-builds.org/docs/build-path/ , -fdebug-prefix-map is available in all GCC versions but only available starting from Clang 3.8, and -fmacro-prefix-map and -ffile-prefix-map are available since GCC 8 and Clang 10. So we check the compiler version and use the available flags depending on if the compiler supports it or not. This does make debugging a bit more annoying, but there are a couple ways to rectify this. Either disable it with -DREMOVE_ABSOLUTE_PATHS=OFF, or add a `.gdbinit` that consists of set substitute-path . ../.. so that `.` is considered to be `../..`. Of course, if you need to, replace `../..` with the actual source directory path (in my case it's `../../..` because I place my build folders in another subdirectory to have multiple build folders in one directory). This doesn't need to be a global `.gdbinit`, it can be in a directory-specific `.gdbinit` (similar to how `.gitignore`s can also be directory-specific). But then you need to add `add-auto-load-safe-path` to your `.gdbinit` to load any directory-specific `.gdbinit`s. The above is for GDB; I don't know what (if anything) needs to be done for LLDB; I don't use LLDB. Fixes #889.
14 KiB
14 KiB