Skip to content

build: various build system improvements #17768

@fanquake

Description

@fanquake

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 build: make linker checks more robust #17874.
  • Add macOS binary checking to security-check.py. Check for PIE, NOUNDEFS. Done in scripts: add MACHO PIE check to security-check.py #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 scripts: Add MACHO dylib checks to symbol-check.py #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 build: macOS toolchain update #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 build: remove configure checks for win libraries we don't link against #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 build: remove linking librt for backwards compatibility #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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions