public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* Build spends a long time in "mkimport".
@ 2020-10-11  2:32 Kaz Kylheku (Cygwin)
  2020-10-11  7:24 ` Mark Geisert
  0 siblings, 1 reply; 2+ messages in thread
From: Kaz Kylheku (Cygwin) @ 2020-10-11  2:32 UTC (permalink / raw)
  To: Cygwin

Hi All,

When building the Cygwin DLL, this single step takes almost ten minutes:

   ../../.././winsup/cygwin/mkimport --cpu=i686 --ar=ar --as=as --nm=nm 
--objcopy=objcopy \
   --replace=atexit= --replace=timezone= --replace=uname=uname_x 
--replace=__xdrrec_getrec=

   [ .. SNIP ... ]

   --replace=truncate=_truncate64 libcygwin.a cygdll.a 
_cygwin_crt0_common.o \
   atexit.o cygwin_attach_dll.o cygwin_crt0.o dll_entry.o dll_main.o 
dso_handle.o \
   libcmain.o premain0.o premain1.o premain2.o premain3.o 
pseudo-reloc-dummy.o

What's puzzling is that there is very CPU activity during this time. 
It's launching
some objcopy commands.

Is there some documentation that provides an overview of what exactly 
this does,
other than studying its perl source code?

Maybe it can be sped up?

I'm going to have to cycle quite a few times on some changes, so this is 
frustrating.




^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Build spends a long time in "mkimport".
  2020-10-11  2:32 Build spends a long time in "mkimport" Kaz Kylheku (Cygwin)
@ 2020-10-11  7:24 ` Mark Geisert
  0 siblings, 0 replies; 2+ messages in thread
From: Mark Geisert @ 2020-10-11  7:24 UTC (permalink / raw)
  To: Cygwin, cygwin-developers

Kaz Kylheku (Cygwin) via Cygwin wrote:
> Hi All,
> 
> When building the Cygwin DLL, this single step takes almost ten minutes:
> 
>    ../../.././winsup/cygwin/mkimport --cpu=i686 --ar=ar --as=as --nm=nm 
> --objcopy=objcopy \
>    --replace=atexit= --replace=timezone= --replace=uname=uname_x 
> --replace=__xdrrec_getrec=
> 
>    [ .. SNIP ... ]
> 
>    --replace=truncate=_truncate64 libcygwin.a cygdll.a _cygwin_crt0_common.o \
>    atexit.o cygwin_attach_dll.o cygwin_crt0.o dll_entry.o dll_main.o dso_handle.o \
>    libcmain.o premain0.o premain1.o premain2.o premain3.o pseudo-reloc-dummy.o
> 
> What's puzzling is that there is very CPU activity during this time. It's launching
> some objcopy commands.
> 
> Is there some documentation that provides an overview of what exactly this does,
> other than studying its perl source code?
> 
> Maybe it can be sped up?
> 
> I'm going to have to cycle quite a few times on some changes, so this is frustrating.

Hi Kaz,
I'm redirecting this to the cygwin-developers list as it's a Cygwin build issue. 
Please follow up there.

I've looked at .../winsup/cygwin/mkimport for the same reason as you -- it takes 
forever on my Windows machines.  But I don't know enough perl to make any changes.

Near the end of mkimport there's a loop over all the "--replace" args, 
essentially.  For each one there are two system() calls launching two objcopy 
processes to do something.  This is much slower on Cygwin than it would be 
cross-building from Linux, for example.

One could parallelize the operations on a multicore machine.  But probably better 
would be figuring out, if possible, how to do the objcopy operations in one pass, 
over two calls if necessary.

PTC, as we've always said :-)

..mark

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-10-11  7:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-11  2:32 Build spends a long time in "mkimport" Kaz Kylheku (Cygwin)
2020-10-11  7:24 ` Mark Geisert

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).