From: Kirill Yukhin <kyukhin@tarantool.org>
To: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH 1/1] Fix build on Mac with gcc and XCode 11
Date: Tue, 10 Dec 2019 17:15:24 +0300 [thread overview]
Message-ID: <20191210141524.pz4qyuryz7hunu76@tarantool.org> (raw)
In-Reply-To: <24ad607cdb08403e955e4c66daf11e2ed99e750e.1575233822.git.v.shpilevoy@tarantool.org>
Hello,
On 01 дек 21:59, Vladislav Shpilevoy wrote:
> There is a bug in XCode 11 which makes some standard C headers
> not self sufficient when compile with gcc. At least <stdlib.h> and
> <algorithm> are affected. When they are included first,
> compilation fails with creepy errors like this:
>
> In file included
> from /Applications/Xcode.app/Contents/Developer/
> Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/
> sys/wait.h:110,
> from /Applications/Xcode.app/Contents/Developer/
> Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/
> stdlib.h:66,
> from tarantool/third_party/zstd/lib/common/zstd_common.c:16:
> /Applications/Xcode.app/Content/Developer/
> Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/
> sys/resource.h:
> In function 'getiopolicy_np': /Applications/Xcode.app/Contents/Developer/
> Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/
> sys/resource.h:447:34: error:
> expected declaration specifiers before '__OSX_AVAILABLE_STARTING'
> 447 | int getiopolicy_np(int, int)
> __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
>
> The patch workarounds the bug by deleting the buggy header
> includes where possible, and by changing include order in other
> cases.
>
> Also there was a second compilation problem. This was about
> different definitions of the same standard functions: via extern
> "C" and without. It looked like this:
>
> In file included from tarantool/src/trivia/util.h:36,
> from tarantool/src/tt_pthread.h:35,
> from tarantool/src/lib/core/fiber.h:38,
> from tarantool/src/lib/core/coio.h:33,
> from tarantool/src/lib/core/coio.cc:31:
> /usr/local/Cellar/gcc/9.2.0_1/lib/gcc/9/gcc/x86_64-apple-darwin18/9.2.0
> include-fixed/stdio.h:222:7: error: conflicting declaration of
> 'char* ctermid(char*)' with 'C' linkage
> 222 | char *ctermid(char *);
> | ^~~~~~~
>
> In file included from /Applications/Xcode.app/Contents/Developer/Platforms/
> MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h:525,
> from tarantool/src/lib/core/fiber.h:37,
> from tarantool/src/lib/core/coio.h:33,
> from tarantool/src/lib/core/coio.cc:31:
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/
> Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h:26:10: note: previous
> declaration with 'C++' linkage
> 26 | char *ctermid(char *);
> | ^~~~~~~
>
> This bug is workarounded by deletion of the conflicting includes,
> because anyway they appeared to be not needed.
>
> Closes #4580
> ---
> Issue: https://github.com/tarantool/tarantool/issues/4580
> Branch: https://github.com/tarantool/tarantool/tree/gerold103/gh-4580-mac-build
I've checked your patch into master.
--
Regards, Kirill
prev parent reply other threads:[~2019-12-10 14:15 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-01 20:59 Vladislav Shpilevoy
2019-12-10 14:15 ` Kirill Yukhin [this message]
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=20191210141524.pz4qyuryz7hunu76@tarantool.org \
--to=kyukhin@tarantool.org \
--cc=tarantool-patches@dev.tarantool.org \
--cc=v.shpilevoy@tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH 1/1] Fix build on Mac with gcc and XCode 11' \
/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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox