Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • G GLib
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 861
    • Issues 861
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 40
    • Merge requests 40
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GNOMEGNOME
  • GLib
  • Issues
  • #1868
Closed
Open
Issue created Aug 14, 2019 by Ghost User@ghost

iOS cross compile impossible due to frexpl check not supporting cross compilation

I am trying to compile glib for iOS. This is a platform where, without a jailbroken device (yes, I realize the irony of me of all people pointing this out ;P), the concept of an "exe wrapper" is even more unreasonable than usual :(. Right now, there is a check trying to determine if the function frexpl() exists and, if it does, whether it is "broken beyond repair". This check includes the following code in gnulib/gl_cv_func_frexpl_works/meson.build and gnulib/meson.build:

if not meson.is_cross_build() or meson.has_exe_wrapper()
  ...
else
  if (host_system.startswith ('aix') or
      host_system.startswith ('beos') or
      host_system.startswith ('darwin') or
      host_system.startswith ('irix'))
    gl_cv_func_frexpl_works = false
    gl_cv_func_frexpl_broken_beyond_repair = true
    ...
  endif
endif
...
if not gl_cv_func_frexpl_works and gl_cv_func_frexpl_broken_beyond_repair
  error ('frexpl() is missing or broken beyond repair, and we have nothing to replace it with')
endif

This effectively means it is impossible to cross compile glib for any of these platforms for which the behavior is hard-coded to report the function is "broken beyond repair". Is there a reason why this situation is so dire as to blacklist all of these platforms from supporting all of glib? If this behavior is that important, why not just replace frexpl with an implementation from some other standard library? (If glibc's license is an issue, FreeBSD has an implementation.)

(Is there maybe some feature of meson I'm supposed to use to override these checks? I'm used to being able to override just about anything using autotools, and have been cross-compiling things for decades to all kinds of crazy systems, and have never had issues like this, but I've so far not found anything in the documentation of meson that would let me get past this build failure. I'm going to try downgrading to old versions of glib in the hope that those builds still work.)

Note: these checks were added somehow due to #1371 in 8f27aa99.

Assignee
Assign to
Time tracking