Page MenuHomePhabricator

[CMAKE] Fix linux cross compilation with the glibc compatibility
AcceptedPublic

Authored by Fabien on Wed, Sep 11, 15:19.

Details

Reviewers
deadalnix
Group Reviewers
Restricted Project
Summary

Using the glibc compatibility requires librt.so, but it is not part of
the depends subsystem.
This diff adds the cross compiler installation dir to the search path:

  • By setting the search prefix explicitely for ARM;
  • By using the system path as a fallback to support the x86 platform.

Because of CMake search priority, the libraries from the depends subsystem will always be found first (if they exist).

Depends on D4038.

Test Plan
cmake -GNinja .. -DENABLE_GLIBC_BACK_COMPAT=ON \
  -DBUILD_BITCOIN_QT=OFF \
  -DCMAKE_TOOLCHAIN_FILE=../cmake/platforms/Linux32.cmake
ninja

Repeat with Linux64, LinuxARM and LinuxAArch64

Diff Detail

Repository
rABC Bitcoin ABC
Branch
cmake_librt
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 7483
Build 13009: Bitcoin ABC Teamcity Staging
Build 13008: arc lint + arc unit

Event Timeline

Fabien created this revision.Wed, Sep 11, 15:19
Herald added a reviewer: Restricted Project. · View Herald TranscriptWed, Sep 11, 15:19
Fabien planned changes to this revision.Mon, Sep 16, 14:52
Fabien edited the summary of this revision. (Show Details)Mon, Sep 16, 15:27
Fabien updated this revision to Diff 11349.Mon, Sep 16, 15:28

Set the fallback at the toochain file level rather than the library.

While this is clearly not the right solution, we can move on with that for the sake of progress. The longer term solution is to add all we depend on in the depends.

Fabien added a comment.Thu, Sep 19, 12:41

Agreed.
In this specific case we might just drop the RT library requirement which brings compatibility to an old glibc version.

deadalnix accepted this revision.Fri, Sep 20, 16:16
This revision is now accepted and ready to land.Fri, Sep 20, 16:16