<h3>General</h3>
<ol>
+<li> Improved: Linking the deal.II libraries on file systems that
+are mounted remotely from a file server took painfully long. This
+is now fixed by linking everything on the local file system
+and only subsequently moving the file into its final location.
+<br>
+(Wolfgang Bangerth, 2011/01/28)
+
<li> Changed: Most classes in deal.II have a member function
<code>memory_consumption</code> that used to return an unsigned int.
However, on most 64-bit systems, unsigned int is still only 32-bit
# $Id$
-# Copyright W. Bangerth, University of Heidelberg, 1998, 1999, 2000, 2001, 2002, 2010
+# Copyright W. Bangerth, University of Heidelberg, 1998, 1999, 2000, 2001, 2002, 2010, 2011
ifneq ($(CLEAN),yes)
endif
-# rules how to make the libraries themselves
+# rules for static libraries
$(LIBDIR)/libdeal_II.g$(static-lib-suffix): $(go-files)
@echo "=====deal.II==========debug======$(MT)== Linking library: $(@F)"
@$(AR) ru $@ $(go-files) $(extra-g.o-files)
@$(RANLIB) $@
+# Rules for shared libraries. these are much more difficult to link
+# because the linker has to update relocations etc. This requires
+# seeking back and forth in memory mapped files and is excruciatingly
+# slow on remotely mounted file systems. Consequently, we link in a
+# local file in the $TMPDIR directory, and only after the fact move
+# them to their final location
$(LIBDIR)/libdeal_II.g$(shared-lib-suffix): $(go-files)
@echo "=====deal.II==========debug======$(MT)== Linking library: $(@F)"
- @$(SHLIBLD) $(LDFLAGS) $(SHLIBFLAGS) -o $(LIBDIR)/$(call DEAL_II_SHLIB_NAME,deal_II.g) $(call DEAL_II_ADD_SONAME,deal_II.g) $(go-files) $(extra-g.o-files) $(deplibs.g)
+ @rm -f $@
+ @WORKFILE=`mktemp` && \
+ $(SHLIBLD) $(LDFLAGS) $(SHLIBFLAGS) -o $$WORKFILE $(call DEAL_II_ADD_SONAME,deal_II.g) $(go-files) $(extra-g.o-files) $(deplibs.g) && \
+ mv $$WORKFILE $(LIBDIR)/$(call DEAL_II_SHLIB_NAME,deal_II.g)
@ln -f -s $(call DEAL_II_SHLIB_NAME,deal_II.g) $@
$(LIBDIR)/libdeal_II$(shared-lib-suffix): $(o-files)
@echo "=====deal.II==========optimized==$(MT)== Linking library: $(@F)"
- @$(SHLIBLD) $(LDFLAGS) $(SHLIBFLAGS) -o $(LIBDIR)/$(call DEAL_II_SHLIB_NAME,deal_II) $(call DEAL_II_ADD_SONAME,deal_II) $(o-files) $(extra-o-files) $(deplibs.o)
+ @rm -f $@
+ @WORKFILE=`mktemp` && \
+ $(SHLIBLD) $(LDFLAGS) $(SHLIBFLAGS) -o $$WORKFILE $(call DEAL_II_ADD_SONAME,deal_II) $(o-files) $(extra-o-files) $(deplibs.o) && \
+ mv $$WORKFILE $(LIBDIR)/$(call DEAL_II_SHLIB_NAME,deal_II)
@ln -f -s $(call DEAL_II_SHLIB_NAME,deal_II) $@