diff --git a/Fltk/GmshServer.h b/Fltk/GmshServer.h
index 8bb5781fa129a1330999165451007a17c845fe5f..8b776c537968e80dfcab5c5fd3f4fe8a6b5fdebf 100644
--- a/Fltk/GmshServer.h
+++ b/Fltk/GmshServer.h
@@ -140,7 +140,7 @@ class GmshServer {
     }
     else{
       // TCP/IP socket
-      char *port = strstr(_sockname, ":");
+      const char *port = strstr(_sockname, ":");
       _portno = atoi(port + 1);
     }
     
diff --git a/contrib/MathEval/Makefile b/contrib/MathEval/Makefile
index 995cc1739d4d685d1a617508cde6f19f531873d2..85ae7ed441474d3029cad3abc15ffdcabc25013f 100644
--- a/contrib/MathEval/Makefile
+++ b/contrib/MathEval/Makefile
@@ -38,7 +38,7 @@ parser:
 	flex -oscanner.yy.cpp -Pme scanner.l
 
 clean:
-	rm -f *.o *.obj
+	${RM} *.o *.obj
 
 depend:
 	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
diff --git a/lib/Makefile b/lib/Makefile
index fcf121ccc95910433535643aa609b543b0782c4c..b83129c5f750df9f3804a5d92a10d8a5ff80dc10 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -3,6 +3,8 @@
 # See the LICENSE.txt file for license information. Please report all
 # bugs and problems to <gmsh@geuz.org>.
 
+include ../variables
+
 clean:
 	${RM} *.a *.lib
 
diff --git a/utils/misc/variables.msvc b/utils/misc/variables.msvc
index 2eb7b9feacb28a5d8637972f9ce48f1543cba9ad..4d3a5dac68ef752f18e7afbe3ea1d64859ef5167 100644
--- a/utils/misc/variables.msvc
+++ b/utils/misc/variables.msvc
@@ -8,6 +8,9 @@
 
 ##################################################################
 
+# Specify where gmake is installed
+MAKE=C:\msys\1.0\home\Administrator\src\gmsh\gmake.exe
+
 # Change the following to select which version to build:
 ENABLE_GUI=0
 ENABLE_PARSER=1
@@ -16,6 +19,12 @@ ENABLE_TETGEN=1
 ENABLE_NETGEN=0
 ENABLE_OCC=0
 
+# If you selected ENABLE_GUI, specify where FLTK is installed
+FLTK_PREFIX=C:\msys\1.0\home\Administrator\src\fltk-1.1.9
+
+# If you selected ENABLE_OCC, specify where OpenCASCADE is insalled
+OCC_PREFIX=C:\OpenCASCADE6.3.0\ros
+
 ##################################################################
 
 # OS and host
@@ -46,7 +55,8 @@ endif
 LINKER=cl /F16777216
 
 # All compiler flags except optimization flags
-FLAGS=/DWIN32 /D_USE_MATH_DEFINES /DHAVE_NO_DLL /DHAVE_NO_SOCKLEN_T /DHAVE_ANN /DHAVE_MATH_EVAL
+FLAGS=/DWIN32 /D_USE_MATH_DEFINES /DHAVE_NO_DLL /DHAVE_NO_SOCKLEN_T
+FLAGS+=/DHAVE_ANN /DHAVE_MATH_EVAL
 
 # Additional system includes ($INCLUDE is automatically defined by MSVC when
 # you launch the MSVC command prompt)
@@ -58,9 +68,6 @@ OPTIM=/O2
 # Gmsh subdirectories
 GMSH_DIRS=Common Geo Mesh Numeric contrib/ANN contrib/MathEval contrib/NR
 
-# Gmsh libraries
-GMSH_LIBS=Common/Main.obj lib/*.lib
-
 # Optional stuff
 ifeq (${ENABLE_PARSER},1)
   GMSH_DIRS+=Parser
@@ -72,10 +79,6 @@ ifeq (${ENABLE_POSTPRO},1)
 else
   FLAGS+=/DHAVE_NO_POST
 endif
-ifeq (${ENABLE_GUI},1)
-  GMSH_DIRS+=Graphics Fltk
-  FLAGS+=/DHAVE_FLTK
-endif
 ifeq (${ENABLE_NETGEN},1)
   FLAGS+=/DHAVE_NETGEN
   GMSH_DIRS+=contrib/Netgen
@@ -85,7 +88,19 @@ ifeq (${ENABLE_TETGEN},1)
   GMSH_DIRS+=contrib/Tetgen
 endif
 ifeq (${ENABLE_OCC},1)
-  FLAGS+=/DHAVE_OCC /DHAVE_NO_OCC_CONFIG_H /DWNT /IC:/OpenCASCADE6.2.0/ros/inc
+  FLAGS+=/DHAVE_OCC /DHAVE_NO_OCC_CONFIG_H /DWNT /I"${OCC_PREFIX}/inc"
+  GMSH_LIBS+=${OCC_PREFIX}/lib/*.lib
+endif
+
+ifeq (${ENABLE_GUI},1)
+  LINKER+=/SUBSYSTEM:WINDOWS
+  GMSH_DIRS+=Graphics Fltk
+  FLAGS+=/DHAVE_FLTK /I"${FLTK_PREFIX}"
+  GMSH_LIBS+=Fltk/Main.obj lib/*.lib lib/*.lib ${FLTK_PREFIX}\lib\fltk*.lib
+  GMSH_LIBS+=glu32.lib opengl32.lib advapi32.lib gdi32.lib user32.lib shell32.lib ole32.lib uuid.lib comctl32.lib
+  GMSH_LIBS+=wsock32.lib winspool.lib ws2_32.lib Fltk/Win32Icon.res
+else
+  GMSH_LIBS=Common/Main.obj lib/*.lib
 endif
 
 # How you create a static library on this machine