[petsc-dev] Experimental GNU make build system

Satish Balay balay at mcs.anl.gov
Wed Jun 5 15:21:22 CDT 2013

On Tue, 4 Jun 2013, Jed Brown wrote:

> > 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.

I have fixed up win32fe to process '@cmdfile' args to archiver
correctly. [i.e win32fe does the windows-unix path conversion for this
opton]. So the following now works.

[I'll have to look at fixing up win32fe anyway to get the
FC_MODULE_OUTPUT_FLAG test going properly anyway]

Also - I removed all the compiler/tool autodetection code in
win32fe. [it wasn't working well - and was disabled by default for the
past few releases. And we've been insisting on users setting up
working compiler enviornment via 'compiler cmd' anyway]

BTW: should we move kspams.c into a subdir [srcksp/ksp/interface/ams]
- so that its conditionally compiled?  [or add in a dummy code at the
end of the current #ifdef in code]. This could go into maint


balay at 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 @/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 at msnehalem2 ~/petsc.clone
$ git diff gmakefile
diff --git a/gmakefile b/gmakefile
index bf9ce21..a0f761f 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) $@ $@.args
+       @cygpath -w $^ > $@.args
+       $(call quiet,AR) $(AR_FLAGS) $@ @$@.args
        $(call quiet,RANLIB) $@
+       @$(RM) $@.args

 # with-single-library=0
 libpkg = $(foreach pkg, $1, $(LIBDIR)/libpetsc$(pkg).so)

balay at msnehalem2 ~/petsc.clone

More information about the petsc-dev mailing list