build: various build system improvements #17768

issue fanquake openend this issue on December 18, 2019
  1. fanquake commented at 1:08 am on December 18, 2019: member

    Opening to keep track of some of the things I’m working on at the moment. Anyone who’s interested in helping out/wants to comment can do so:

    • Improve link time error checking using --fatal-warnings. Add to invocations of AX_CHECK_LINK_FLAG. Being done in #17874.
    • Add macOS binary checking to security-check.py. Check for PIE, NOUNDEFS. Done in #17787.
    • Patch our depends ld64 to actually insert BINDATLOAD. The patch has been done (also Cory). Needs to be properly tested and PR’d. Add BINDATLOAD check to security-check.py at the same time.
    • Add macOS dynamic library checking to symbol-check.py. I’ve got a version of this here. Done in #17863.
    • Add macos_min_version to our ld flags. This isn’t so straight forward, our depends ld64 accepts macosx_min_version instead of macos_min_version and Apple hasn’t yet open sourced the version of cctools in which the switchover occurred . Instead of integrating into configure, should be added to depends (this argument actually gets added to the link flags on macOS, with min version set to the OS version). Should be done on top of the ld64 changes in #16392.

    I realise all of the above is macOS specific, so most may not care, however there are some non-macOS build system changes in the pipeline as well:

    • Test using pkg-config for mingw-w64 Windows cross-compiles. If this works (or can be made to work) correctly, it’ll eliminate the non pkg-config paths from the build system. Boost likely to be a sticking point here. Will elimiate the need for PRs like #17740.
    • Now that we require glibc >= 2.17, we can look at eliminating some of our memcpy/memmove back-compat code.
    • librt back-compat changes done in #17738.
    • Qt 5.12.6 in depends. I have a branch with the changes started here. It doesn’t yet work for various reasons. One being that you can’t actually compile qt 5.12.6 for macOS targeting C++11 (even though it’s a configure option), as they have started using C++14 features in the macOS portions of the code, i.e qcocoabackingstore. Qt have also removed xkbcommon from their third-party tree, which means we’ll likely have to integrate it into depends. Windows wants to link against the Remote Desktop API to fix a clipboard copying bug.. . Probably something we can either patch out/turn off.
  2. fanquake added the label Build system on Dec 18, 2019
  3. hebasto commented at 4:42 pm on December 31, 2019: member
    • Qt 5.12.6 in depends. I have a branch with the changes started here. It doesn’t yet work for various reasons. One being that you can’t actually compile qt 5.12.6 for macOS targeting C++11 (even though it’s a configure option), as they have started using C++14 features in the macOS portions of the code, i.e qcocoabackingstore. Qt have also removed xkbcommon from their third-party tree, which means we’ll likely have to integrate it into depends. Windows wants to link against the Remote Desktop API to fix a clipboard copying bug.. . Probably something we can either patch out/turn off.

    There is a related QTBUG-77310:

    Building Qt requires C+11, at a minimum, but in practice we use later features, usually under a feature define, or with a fallback of some kind. On platforms that support > C11, we’ve (apparently) not considered the fallback necessary, under the assumption C+14 is always available.

  4. hebasto commented at 8:04 am on March 9, 2020: member
    • Test using pkg-config for mingw-w64 Windows cross-compiles. If this works (or can be made to work) correctly, it’ll eliminate the non pkg-config paths from the build system. Boost likely to be a sticking point here. Will elimiate the need for PRs like #17740.

    See: #18297, #18298, #18307.

  5. fanquake referenced this in commit d486991aa5 on Apr 9, 2020
  6. sidhujag referenced this in commit 985073abb5 on Apr 13, 2020
  7. fanquake referenced this in commit 7d9008f43e on Jul 3, 2020
  8. hebasto commented at 8:20 am on July 3, 2020: member

    @fanquake

    • Test using pkg-config for mingw-w64 Windows cross-compiles. If this works (or can be made to work) correctly, it’ll eliminate the non pkg-config paths from the build system. Boost likely to be a sticking point here. Will elimiate the need for PRs like #17740.

    Could be checked now? :)

  9. fanquake commented at 9:11 am on July 3, 2020: member

    Could be checked now? :)

    👍

  10. fanquake commented at 12:16 pm on March 16, 2021: member
    Now that #21405 and #21376 are merged, this can be closed.
  11. fanquake closed this on Mar 16, 2021

  12. PastaPastaPasta referenced this in commit 0b097ab70a on Jun 19, 2022
  13. PastaPastaPasta referenced this in commit 67ceda1b5a on Jun 19, 2022
  14. DrahtBot locked this on Aug 18, 2022

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-07-03 10:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me