Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: fix developer mode compilation on FreeBSD #3344

Merged

Conversation

vasild
Copy link
Contributor

@vasild vasild commented Dec 13, 2019

Recent FreeBSD versions use LLVM's lld as a linker, not the GNU ld.
Their behavior slightly differs, so adapt the build system to handle
either one.

  • The LLVM's linker prints "undefined symbol:" instead of
    "undefined reference to". Tweak tools/mockup.sh to also look for that
    message.

  • The LLVM's linker may only print the first dozen errors (omitting
    the rest to avoid flooding the screen). tools/update-mocks.sh relies
    on getting all errors as it extracts the missing symbols' names from
    the error output and creates mocks for them. Detect if errors were
    omitted and re-run, telling the linker to not omit any. The GNU linker
    does not support -error-limit=0, so unfortunately we can't just run
    with that option unconditionally from the first attempt.

  • Nit: FreeBSD's sed(1) prints "t" for "\t" instead of a horizontal tab.
    Use a verbatim tab in the command, instead of "\t" which works on
    both.

Recent FreeBSD versions use LLVM's lld as a linker, not the GNU ld.
Their behavior slightly differs, so adapt the build system to handle
either one.

* The LLVM's linker prints "undefined symbol:" instead of
  "undefined reference to". Tweak tools/mockup.sh to also look for that
  message.

* The LLVM's linker may only print the first dozen errors (omitting
  the rest to avoid flooding the screen). tools/update-mocks.sh relies
  on getting all errors as it extracts the missing symbols' names from
  the error output and creates mocks for them. Detect if errors were
  omitted and re-run, telling the linker to not omit any. The GNU linker
  does not support -error-limit=0, so unfortunately we can't just run
  with that option unconditionally from the first attempt.

* Nit: FreeBSD's sed(1) prints "t" for "\t" instead of a horizontal tab.
  Use a verbatim tab in the command, instead of "\t" which works on
  both.

Changelog-Fixed: Developer mode compilation on FreeBSD.
@vasild vasild force-pushed the fix-dev-mode-compilation-fbsd branch from 783d2fa to 0092d4b Compare December 31, 2019 21:09
@cdecker
Copy link
Member

cdecker commented Jan 2, 2020

ACK 0092d4b

@cdecker cdecker merged commit b2c4d5e into ElementsProject:master Jan 2, 2020
@vasild vasild deleted the fix-dev-mode-compilation-fbsd branch January 3, 2020 08:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants