--- Begin Message ---
Subject: |
28.0.50; 32bit or LTO movemail build fails on macOS |
Date: |
Tue, 24 Mar 2020 12:14:11 +0900 |
User-agent: |
Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (Gojō) APEL/10.8 EasyPG/1.0.0 Emacs/26 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) |
On macOS, movemail cannot be built with CC='cc -arch i386':
CCLD movemail
Undefined symbols for architecture i386:
"_rpl_getopt$UNIX2003", referenced from:
_main in movemail-1f1ea0.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
make[1]: *** [movemail] Error 1
make: *** [lib-src] Error 2
This is due to the following part in the system getopt.h:
#ifndef _GETOPT
#define _GETOPT
int getopt(int, char * const [], const char *) __DARWIN_ALIAS(getopt);
extern char *optarg; /* getopt(3) external variables */
extern int optind, opterr, optopt;
#endif
which is expanded to:
int rpl_getopt(int, char * const [], const char *) __asm("_" "rpl_getopt"
"$UNIX2003");
extern char *rpl_optarg;
extern int rpl_optind, rpl_opterr, rpl_optopt;
I think the Gnulib getopt does not expect the __asm line above.
64-bit LTO build with CC='cc -flto' fails, too.
CCLD movemail
ld: reference to symbol (which has not been assigned an address) _rpl_getopt
in '_main' from /var/folders/69/m7h39yv92g70qy7p3xdlghdm0000gn/T/cc-907a5d.o
for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
make[1]: *** [movemail] Error 1
make: *** [lib-src] Error 2
YAMAMOTO Mitsuharu
address@hidden
--- End Message ---
--- Begin Message ---
Subject: |
Re: 32bit or LTO movemail build fails on macOS |
Date: |
Wed, 25 Mar 2020 13:43:01 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 |
On 3/24/20 9:07 PM, YAMAMOTO Mitsuharu wrote:
Yes, this works for both -arch i386 and -flto cases.
Thanks for checking. I installed the patch into Gnulib and propagated the fix
into Emacs master, and am marking this Emacs bug as done.
--- End Message ---