diff --git a/Box/Makefile b/Box/Makefile
index 51ab765a663b56ff1d28d047f6add33837fa4922..f8dcea8f290dcbb671af1d3f1a4da4e94793297b 100644
--- a/Box/Makefile
+++ b/Box/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.48 2008-04-23 20:49:42 geuzaine Exp $
+# $Id: Makefile,v 1.49 2008-04-23 22:38:42 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -40,6 +40,9 @@ ${LIB}: ${OBJ} Main${OBJEXT}
 	${AR} ${ARFLAGS}${LIB} ${OBJ} 
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
diff --git a/Common/Makefile b/Common/Makefile
index 78e6b2ccd719751b3391d46fd7c5f9234cc7cb59..440af91a316f96b6dc92184c560a54d030967ce0 100644
--- a/Common/Makefile
+++ b/Common/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.168 2008-04-22 07:37:08 geuzaine Exp $
+# $Id: Makefile,v 1.169 2008-04-23 22:38:46 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -51,6 +51,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ}
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
diff --git a/DataStr/Makefile b/DataStr/Makefile
index 88dcae93b4b590ec049a92d2e562bf843b63812a..baa1a50ea045f8e208298cb5063bad205eb69565 100644
--- a/DataStr/Makefile
+++ b/DataStr/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.45 2008-02-17 08:47:56 geuzaine Exp $
+# $Id: Makefile,v 1.46 2008-04-23 22:38:47 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -42,6 +42,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ}
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
diff --git a/Geo/Makefile b/Geo/Makefile
index 1bf88b221a3793c6d371f84886e220ffab2846e1..4c93d6675cbe8fd61ffdaa94bcf612ab4e08cb12 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.202 2008-04-23 08:20:40 geuzaine Exp $
+# $Id: Makefile,v 1.203 2008-04-23 22:38:48 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -63,6 +63,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ}
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
diff --git a/Makefile b/Makefile
index 4a76e4c4ce1e001469823ceae8e5491ae5aedfcf..c58ee2861abd13050052ce9828ef8e33408c378c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.478 2008-04-18 08:24:39 remacle Exp $
+# $Id: Makefile,v 1.479 2008-04-23 22:38:36 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -60,11 +60,6 @@ link-mac-universal: compile
 	lipo -create bin/gmsh_i386 bin/gmsh_ppc -output bin/gmsh
 	rm -f bin/gmsh_i386 bin/gmsh_ppc
 
-.PHONY: lib
-lib: compile
-	${AR} ${ARFLAGS}bin/libGmsh${LIBEXT} lib/*${LIBEXT}
-	${RANLIB} bin/libGmsh${LIBEXT}
-
 compile: variables initialtag
 	@for i in ${GMSH_DIRS}; do (cd $$i && ${MAKE}); done
 
@@ -86,12 +81,17 @@ install-mac: variables package-mac
 uninstall-mac:
 	rm -rf /Applications/Gmsh.app
 
+.PHONY: lib
+lib:
+	@for i in ${GMSH_DIRS}; do (cd $$i && ${MAKE} lib); done
+	${RANLIB} lib/libGmsh${LIBEXT}
+
 install-lib: lib
 	mkdir -p ${includedir}/gmsh
 	rm -f ${includedir}/gmsh/*
 	cp -f ${GMSH_API} ${includedir}/gmsh
 	mkdir -p ${libdir}
-	cp -f bin/libGmsh${LIBEXT} ${libdir}/libGmsh${LIBSUFFIX}${LIBEXT}
+	cp -f lib/libGmsh${LIBEXT} ${libdir}/libGmsh${LIBSUFFIX}${LIBEXT}
 
 uninstall-lib:
 	rm -rf ${includedir}/gmsh
diff --git a/Mesh/Makefile b/Mesh/Makefile
index 5c992d63896256634e54de9dc0ab0f44f70ee616..6763480e6785710a608775c9efc008a7e374999e 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.214 2008-04-22 07:37:10 geuzaine Exp $
+# $Id: Makefile,v 1.215 2008-04-23 22:38:50 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -65,6 +65,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ} 
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
diff --git a/Numeric/Makefile b/Numeric/Makefile
index 1522ff6d79b3b4ff1f9069bf32f066778b1c63e4..5c7f413a00830a1eeba7d3f5276991b142665598 100644
--- a/Numeric/Makefile
+++ b/Numeric/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.49 2008-02-21 09:49:22 geuzaine Exp $
+# $Id: Makefile,v 1.50 2008-04-23 22:38:51 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -31,7 +31,7 @@ SRC = Numeric.cpp\
         NumericEmbedded.cpp\
       EigSolve.cpp\
       FunctionSpace.cpp\
-      predicates.cpp\
+      gmsh_predicates.cpp\
       gsl_newt.cpp\
       gsl_min.cpp\
       gsl_brent.cpp
@@ -44,6 +44,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ}
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
@@ -65,7 +68,6 @@ NumericEmbedded.o: NumericEmbedded.cpp NumericEmbedded.h \
 EigSolve.o: EigSolve.cpp
 FunctionSpace.o: FunctionSpace.cpp FunctionSpace.h ../Common/GmshMatrix.h \
   ../Common/GmshDefines.h
-predicates.o: predicates.cpp
 gsl_newt.o: gsl_newt.cpp ../Common/Message.h Numeric.h NumericEmbedded.h
 gsl_min.o: gsl_min.cpp ../Common/Message.h Numeric.h NumericEmbedded.h
 gsl_brent.o: gsl_brent.cpp ../Common/Message.h Numeric.h \
diff --git a/Parallel/Makefile b/Parallel/Makefile
index f00c61414351ad584599b61983f2eced7e270221..4cb603dee90288de0d0dc001f2e7f67f979ab40d 100644
--- a/Parallel/Makefile
+++ b/Parallel/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.43 2008-02-17 08:48:02 geuzaine Exp $
+# $Id: Makefile,v 1.44 2008-04-23 22:38:52 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -37,6 +37,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ} 
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
diff --git a/Parser/Makefile b/Parser/Makefile
index a17e45237ed20f9d3bccf8d4dca6cf64a31a8193..8cb368a8e82697aa89a634142e8dca91656996d7 100644
--- a/Parser/Makefile
+++ b/Parser/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.149 2008-04-22 07:37:16 geuzaine Exp $
+# $Id: Makefile,v 1.150 2008-04-23 22:38:53 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -43,6 +43,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ}
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
diff --git a/Plugin/Makefile b/Plugin/Makefile
index 92f03adef535e3a71b3fee47c1127bc56cc72129..afae2046edf3186cdc1d32b1604a8ee5804be608 100644
--- a/Plugin/Makefile
+++ b/Plugin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.162 2008-04-22 07:37:16 geuzaine Exp $
+# $Id: Makefile,v 1.163 2008-04-23 22:38:54 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -58,6 +58,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ}
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
diff --git a/Post/Makefile b/Post/Makefile
index 656e4f078bb60e66297e74dee07b1c050eb6c405..b1bf860c1b5feb1471dc40eb96dbe46a5ac4025a 100644
--- a/Post/Makefile
+++ b/Post/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.41 2008-04-22 07:37:16 geuzaine Exp $
+# $Id: Makefile,v 1.42 2008-04-23 22:38:55 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -47,6 +47,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ}
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
diff --git a/contrib/ANN/Makefile b/contrib/ANN/Makefile
index 44d92c4abe6029d0721950218c3d5c740ebdca56..a6993f9f1505c23c1236d89dc4added22d09673c 100644
--- a/contrib/ANN/Makefile
+++ b/contrib/ANN/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.21 2008-02-17 08:48:09 geuzaine Exp $
+# $Id: Makefile,v 1.22 2008-04-23 22:38:56 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -50,6 +50,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ} 
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $< ${DASH}o ${<:.cpp=${OBJEXT}}
 	if [ -r ${notdir ${<:.cpp=${OBJEXT}}} ]; then\
diff --git a/contrib/MathEval/Makefile b/contrib/MathEval/Makefile
index eaeaf4abeb64df562e9ca97ec934701094d880ec..2ac0bfd6a196379663baea42811a2c3e44842bb9 100644
--- a/contrib/MathEval/Makefile
+++ b/contrib/MathEval/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.21 2008-02-27 12:39:28 geuzaine Exp $
+# $Id: Makefile,v 1.22 2008-04-23 22:38:57 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -42,6 +42,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ}
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
diff --git a/contrib/NR/Makefile b/contrib/NR/Makefile
index cc35693d92afd87841120802c73a8d9122f93717..ce212df514c75f5a8631103cc4c38094c559ad9d 100644
--- a/contrib/NR/Makefile
+++ b/contrib/NR/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.11 2008-02-17 08:48:09 geuzaine Exp $
+# $Id: Makefile,v 1.12 2008-04-23 22:38:58 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -48,6 +48,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ}
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<
 
diff --git a/contrib/Netgen/Makefile b/contrib/Netgen/Makefile
index abc63406c7d033fa9ac10a9698fabedd769f6b67..ef78406ddbdfc7458f77d900f43223f7014c9ee7 100644
--- a/contrib/Netgen/Makefile
+++ b/contrib/Netgen/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.36 2008-04-06 07:51:38 geuzaine Exp $
+# $Id: Makefile,v 1.37 2008-04-23 22:38:59 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -136,6 +136,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ} 
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cpp${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $< ${DASH}o ${<:.cpp=${OBJEXT}}
 	if [ -r ${notdir ${<:.cpp=${OBJEXT}}} ]; then\
diff --git a/contrib/Tetgen/Makefile b/contrib/Tetgen/Makefile
index 64634683835533bb16f33aa6614d851b7ede64a3..38b3f6ec838fd4d2e6b8bce40859bb19fc84fe7e 100644
--- a/contrib/Tetgen/Makefile
+++ b/contrib/Tetgen/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.11 2008-02-17 08:48:11 geuzaine Exp $
+# $Id: Makefile,v 1.12 2008-04-23 22:39:00 geuzaine Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -35,6 +35,9 @@ ${LIB}: ${OBJ}
 	${AR} ${ARFLAGS}${LIB} ${OBJ} 
 	${RANLIB} ${LIB}
 
+lib: ${OBJ} 
+	${AR} ${ARFLAGS}../../lib/libGmsh${LIBEXT} ${OBJ}
+
 .cxx${OBJEXT}:
 	${CXX} ${CFLAGS} ${DASH}c $<