Satish Balay <[email protected]> writes:

> As I understand it - 32k limit is for windows apps [using windows
> compiler dlls?]. Cygwin binaries appear to handle long args properly.

Cool, that explains why your fix works.

> 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

I.e., just suppress the warning for arguments starting with '@'?  That
sounds good.

> $ 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]

You should be able to do a multi-line definition, something like this:

define ARCHIVE_RECIPE_CYGWIN
  @$(RM) $@ [email protected]
  @cygpath -w $^ > [email protected]
  $(call quiet,AR) $(AR_FLAGS) $@ @`cygpath -w [email protected]`
  $(call quiet,RANLIB) $@
  @$(RM) [email protected]
endef

define ARCHIVE_RECIPE_DEFAULT
  @$(RM) $@
  $(call quiet,AR) $(AR_FLAGS) $@ $^
  $(call quiet,RANLIB) $@
endef

%.$(AR_LIB_SUFFIX) : $$(obj) | $$(@D)/.DIR
        $(if 
$(PETSC_HAVE_CYGWIN),$(ARCHIVE_RECIPE_CYGWIN),$(ARCHIVE_RECIPE_DEFAULT))

Reply via email to