diff --git a/Makefile b/Makefile
index 299581d178ab7cc37de581cfb2fea768b4d695f0..42c5883fc0e795818be91894b27a75a8f067d455 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.443 2007-11-25 08:35:11 geuzaine Exp $
+# $Id: Makefile,v 1.444 2007-11-27 22:37:00 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -155,7 +155,7 @@ source-tree: purge
 source: source-tree
 	cd gmsh-${GMSH_VERSION} && rm -rf ${GMSH_VERSION_FILE}\
           contrib/NR contrib/Triangle/triangle.* contrib/Tetgen/tetgen.*\
-          contrib/Tetgen/predicates.* utils/commercial 
+          contrib/Tetgen/predicates.* utils/commercial utils/nightly
 	tar zcvf gmsh-${GMSH_VERSION}-source.tgz gmsh-${GMSH_VERSION}
 
 source-commercial: source-tree
diff --git a/utils/nightly/Makefile b/utils/nightly/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..7844671e832b0b01ec0cf6010028e4d056a40e4b
--- /dev/null
+++ b/utils/nightly/Makefile
@@ -0,0 +1,42 @@
+#
+# makefile to create the nightly builds
+#
+
+# finish the rules even if we encounter errors?
+# .IGNORE:
+
+# be quiet?
+.SILENT: gmsh-update gmsh-windows-nightly gmsh-linux-nightly gmsh-mac-nightly
+
+GMSH=${HOME}/src/gmsh
+LOG=${GMSH}/nightly.log
+WEB_BIN=geuzaine@geuz.org:/home/www/geuz.org/gmsh/bin
+
+gmsh-update:
+	rm -f ${LOG}
+	rm -f ${GMSH}/Makefile*
+	echo "BUILD BEGIN: `date`" > ${LOG}
+	cd ${GMSH} && export CVS_RSH=ssh && cvs update -dPA >> ${LOG} 2>&1
+	cd ${GMSH} && ./configure --enable-universal --disable-fm\
+                                  --with-occ-prefix=/usr/local/opencascade\
+                                  --with-fltk-prefix=/usr/local >> ${LOG} 2>&1
+	cd ${GMSH} && rm -rf gmsh-*-cvs-*
+	cd ${GMSH} && make clean >> ${LOG} 2>&1
+
+gmsh-windows-nightly: gmsh-update
+	cd ${GMSH} && make distrib-win-nightly >> ${LOG} 2>&1
+	scp ${GMSH}/gmsh-*-cvs-*.zip ${WEB_BIN}/Windows/gmsh-nightly-Windows.zip
+	echo "BUILD END: `date`" >> ${LOG}
+	scp ${LOG} ${WEB_BIN}/Windows/
+
+gmsh-linux-nightly: gmsh-update
+	cd ${GMSH} && make distrib-unix-nightly >> ${LOG} 2>&1
+	scp ${GMSH}/gmsh-*-cvs-*.tgz ${WEB_BIN}/Linux/gmsh-nightly-Linux.tgz
+	echo "BUILD END: `date`" >> ${LOG}
+	scp ${LOG} ${WEB_BIN}/Linux/
+
+gmsh-mac-nightly: gmsh-update
+	cd ${GMSH} && make distrib-mac-nightly >> ${LOG} 2>&1
+	scp ${GMSH}/gmsh-*-cvs-*.tgz ${WEB_BIN}/MacOSX/gmsh-nightly-MacOSX.tgz
+	echo "BUILD END: `date`" >> ${LOG}
+	scp ${LOG} ${WEB_BIN}/MacOSX/
diff --git a/utils/nightly/crontab.linux b/utils/nightly/crontab.linux
new file mode 100644
index 0000000000000000000000000000000000000000..34625ed442f6c9a687bd0d4aec826e5fe2b4a1bb
--- /dev/null
+++ b/utils/nightly/crontab.linux
@@ -0,0 +1,4 @@
+#
+# this will launch a new build every night at 1h01
+#
+1 1 * * * cd ${HOME}/src/gmsh/utils/nightly && make gmsh-linux-nightly
diff --git a/utils/nightly/crontab.mac b/utils/nightly/crontab.mac
new file mode 100644
index 0000000000000000000000000000000000000000..2487f7c0b8b128917910889d2f5939252beea88c
--- /dev/null
+++ b/utils/nightly/crontab.mac
@@ -0,0 +1,4 @@
+#
+# this will launch a new build every night at 0h01
+#
+1 0 * * * cd ${HOME}/src/gmsh/utils/nightly && make gmsh-mac-nightly
diff --git a/utils/nightly/crontab.windows b/utils/nightly/crontab.windows
new file mode 100644
index 0000000000000000000000000000000000000000..cefb78abb71a96449871c32978accdc191626a4e
--- /dev/null
+++ b/utils/nightly/crontab.windows
@@ -0,0 +1,4 @@
+#
+# this will launch a new build every night at 2h01
+#
+1 2 * * * cd ${HOME}/src/gmsh/utils/nightly && make gmsh-windows-nightly