From: "Charles A. Roelli" <charles@aurox.ch>
To: Alan Third <alan@idiocy.org>
Cc: Anders Lindgren <andlind@gmail.com>, 27810@debbugs.gnu.org
Subject: bug#27810: NS runtime feature detection
Date: Sat, 12 Aug 2017 13:13:56 +0200 [thread overview]
Message-ID: <a38d5863-f921-d76f-7062-3ce00eb752f7@aurox.ch> (raw)
In-Reply-To: <20170810210457.GA85019@breton.holly.idiocy.org>
Hm, on second thoughts, it seems a bit overwrought to try doing this
weak linking only for the sake of forward-compatible builds. It
should be enough to support only backward-compatible builds, so that
we might one day distribute Emacs as a .dmg (built on the latest macOS
and backwards-compatible with the oldest version of macOS that we
support). I don't want to waste time adding code that will hardly
ever be run, so we can take out those forward declarations. Sorry for
the trouble! I will send a patch on top of your new one that removes
them (I'm also having build trouble at the moment).
I also looked at the emacsformacosx.com build scripts, and it seems
like they're making copies of Emacs' dependent dynamic libraries,
including them in the application bundle, then using
install_name_tool(1) to patch the Emacs binary to depend on them (I
don't understand, though, how those scripts resolve dependencies
between the dynamic libraries themselves).
On 10/08/2017 23:04, Alan Third wrote:
> On Mon, Aug 07, 2017 at 09:23:10PM +0200, Charles A. Roelli wrote:
>> On 06/08/2017 23:29, Alan Third wrote:
>>> I believe we can make this slightly neater:
>>>
>>> enum NSScrollerStyle {
>>> NSScrollerStyleLegacy = 0,
>>> NSScrollerStyleOverlay = 1
>>> };
>> Strange, it doesn't work here:
> We’ll just go with what works, then.
>
>>> I’ve done a bit more reading up on this and I think I’ve misunderstood
>>> how this works, and probably mislead you.
>>>
>>> It seems these functions need to be declared as weak in the definition
>>> of the library they’re supposed to be in. If we declare them in the
>>> Emacs code‐base then the linker, reasonably, expects the functions to
>>> be in the Emacs code‐base.
>> Maybe I'm also confused. I thought we would be able to do this,
>> since:
>>
>> - At link time, the symbol is marked as a weak reference, to be
>> resolved at runtime.
>>
>> - At runtime, the dynamic linker resolves the reference to the weak
>> symbol, setting it to NULL if it isn't available. Normally the
>> definition of the function will be found in a dynamic library that
>> is part of macOS (as far as I understand).
>>
>> The Apple compiler/linker should be capable of doing this, supposedly,
>> as long as you give the magical -Wl,-U,_symbol command line arguments
>> to the linker. See also https://stackoverflow.com/a/34983229.
> That’s quite a good description. I guess that we want to do what
> you’re suggesting, then. I’m not sure how, though. I’ll try to have a
> look through configure.ac to see if I can work it out sometime over
> the weekend.
>
>> I'd like to check, but wouldn't I need to either:
>>
>> a) Statically link libraries Emacs depends on, or
>> b) Include the dependent libraries in the app bundle?
> Yes, I suppose so. I kind of assumed it would statically link at least
> some of them, but I guess not.
>
> I’ve had a look at the build scripts for emacsformacosx.com, but I
> don’t understand what they’re doing.
>
> I’ve attached what I have so far, which I think includes all your
> changes except for the requirements for linker arguments.
> Unfortunately master doesn’t build here now because of some other
> problem so it’s untested.
next prev parent reply other threads:[~2017-08-12 11:13 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-06 11:29 Mac OS Sierra tab feature breaks C-x 5 2 Paul Michael Reilly
2017-07-06 12:14 ` Jean-Christophe Helary
2017-07-06 12:46 ` Sebastian Christ
2017-07-06 12:53 ` Alan Third
2017-07-06 14:35 ` Alan Third
2017-07-06 15:05 ` Jean-Christophe Helary
2017-07-06 17:42 ` Alan Third
2017-07-06 22:16 ` Alan Third
2017-07-10 19:17 ` Anders Lindgren
2017-07-10 19:52 ` Alan Third
2017-07-10 20:22 ` Anders Lindgren
2017-07-12 18:23 ` Alan Third
2017-07-12 21:20 ` Anders Lindgren
2017-07-13 20:22 ` Alan Third
2017-07-16 18:43 ` Anders Lindgren
2017-07-16 23:01 ` Alan Third
2017-07-17 20:09 ` Charles A. Roelli
2017-07-18 6:06 ` Anders Lindgren
2017-07-18 18:33 ` Charles A. Roelli
2017-07-18 22:16 ` Alan Third
2017-07-19 4:57 ` Charles A. Roelli
2017-07-21 20:31 ` Anders Lindgren
2017-07-22 11:22 ` Alan Third
2017-07-23 12:17 ` NS runtime feature detection (was: Mac OS Sierra tab feature breaks C-x 5 2) Alan Third
2017-07-24 19:02 ` NS runtime feature detection Charles A. Roelli
2017-07-24 20:44 ` bug#27810: " Alan Third
2017-07-24 20:53 ` Glenn Morris
2017-07-25 17:56 ` Alan Third
2017-07-25 18:22 ` Charles A. Roelli
2017-07-25 20:08 ` Anders Lindgren
2017-07-26 21:57 ` Alan Third
2017-07-31 19:05 ` Charles A. Roelli
2017-08-01 15:38 ` Anders Lindgren
2017-08-01 22:03 ` Alan Third
2017-08-06 20:29 ` Charles A. Roelli
2017-08-06 21:29 ` Alan Third
2017-08-07 19:23 ` Charles A. Roelli
2017-08-10 21:04 ` Alan Third
2017-08-12 11:13 ` Charles A. Roelli [this message]
2017-08-12 13:02 ` Charles A. Roelli
2017-08-16 20:31 ` Alan Third
2017-08-12 15:51 ` Alan Third
2017-09-12 20:01 ` David Caldwell
2017-09-12 20:06 ` David Reitter
2017-09-12 20:34 ` Alan Third
2017-09-12 20:29 ` Alan Third
2017-09-13 19:03 ` Charles A. Roelli
2017-07-24 20:45 ` Alan Third
2017-07-23 22:35 ` Mac OS Sierra tab feature breaks C-x 5 2 Tim Cross
-- strict thread matches above, loose matches on Subject: below --
2017-07-24 20:22 bug#27810: macOS runtime feature detection Alan Third
2017-07-26 2:59 ` Richard Stallman
2017-07-26 16:06 ` Alan Third
2017-07-27 1:43 ` Richard Stallman
2017-07-27 17:31 ` Eli Zaretskii
2017-07-28 17:14 ` Richard Stallman
2017-07-28 17:36 ` Eli Zaretskii
2017-07-29 19:04 ` Richard Stallman
2017-07-31 0:45 ` Richard Stallman
2017-07-29 19:07 ` Richard Stallman
2017-07-30 12:12 ` Alan Third
2017-07-30 14:15 ` Eli Zaretskii
2017-07-31 0:47 ` Richard Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a38d5863-f921-d76f-7062-3ce00eb752f7@aurox.ch \
--to=charles@aurox.ch \
--cc=27810@debbugs.gnu.org \
--cc=alan@idiocy.org \
--cc=andlind@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.