On Tue, 4 Jun 2013, Jed Brown wrote: > Satish Balay <[email protected]> writes: > > > I can use cygpath directly from gmakefile to handle this. > > > > @cygpath -w $^ > ar.args > > I don't understand how this works. Doesn't it overflow the argument > list just as surely as the other methods? Wouldn't we need to write the > arguments file incrementally if we're going to pass the file names on > the command line?
As I understand it - 32k limit is for windows apps [using windows compiler dlls?]. Cygwin binaries appear to handle long args properly. [the previous issue we had was when using 'cmd1 && cmd1' or 'cmd1 | cmd1' via make - which is now fixed in the updated cygwin dll] The following updated thingy also works - but with a [false] warning from win32fe. I must have seen this before and assumed '@file' didn't work from win32fe I guess I should look at fixing win32fe to handle '@file' properly Satish -------- balay@msnehalem2 ~/petsc.clone $ make -f gmakefile PETSC_ARCH=arch-cmplx -j 20 V=1 /home/balay/petsc.clone/bin/win32fe/win32fe lib -a /home/balay/petsc.clone/arch-cmplx/lib/libpetsc.lib @`cygpath -w /home/balay/petsc.clone/arch-cmplx/lib/libpetsc.lib.args` Warning: win32fe: File Not Found: @C:\cygwin\home\balay\petsc.clone\arch-cmplx\lib\libpetsc.lib.args kspams.o : warning LNK4221: no public symbols found; archive member will be inaccessible /usr/bin/true /home/balay/petsc.clone/arch-cmplx/lib/libpetsc.lib balay@msnehalem2 ~/petsc.clone $ make test Running test examples to verify correct installation Using PETSC_DIR=/home/balay/petsc.clone and PETSC_ARCH=arch-cmplx C/C++ example src/snes/examples/tutorials/ex19 run successfully with 1 MPI process Fortran example src/snes/examples/tutorials/ex5f run successfully with 1 MPI process Completed test examples balay@msnehalem2 ~/petsc.clone $ git diff gmakefile diff --git a/gmakefile b/gmakefile index bf9ce21..83a1a54 100644 --- a/gmakefile +++ b/gmakefile @@ -68,9 +68,11 @@ $(libpetsc_shared) : $(srcs.o) | $$(@D)/.DIR $(libpetsc_static) : obj := $(srcs.o) %.$(AR_LIB_SUFFIX) : $$(obj) | $$(@D)/.DIR - @$(RM) $@ - $(call quiet,AR) $(AR_FLAGS) $@ $^ + @$(RM) $@ [email protected] + @cygpath -w $^ > [email protected] + $(call quiet,AR) $(AR_FLAGS) $@ @`cygpath -w [email protected]` $(call quiet,RANLIB) $@ + @$(RM) [email protected] # with-single-library=0 libpkg = $(foreach pkg, $1, $(LIBDIR)/libpetsc$(pkg).so) balay@msnehalem2 ~/petsc.clone
