diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5d8d3218c21d3832232b883efcf6e2a0b5d7b0b6..57a0ac7301b534370ceaa43d07df15d262adf6aa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -61,8 +61,8 @@ set(GMSH_VERSION "${GMSH_VERSION}.${GMSH_PATCH_VERSION}${GMSH_EXTRA_VERSION}")
 set(GMSH_SHORT_LICENSE "GNU General Public License")
 
 set(GMSH_API
-  ${CMAKE_BINARY_DIR}/Common/GmshConfig.h 
-  ${CMAKE_BINARY_DIR}/Common/GmshVersion.h
+  ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h 
+  ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h
   Common/Gmsh.h Common/GmshDefines.h Common/GmshMessage.h Common/VertexArray.h
   Numeric/Numeric.h Numeric/Gauss.h Numeric/polynomialBasis.h Numeric/fullMatrix.h
     Numeric/simpleFunction.h Numeric/cartesian.h
@@ -316,6 +316,10 @@ if(ENABLE_FLTK)
       set(HAVE_FL_TREE TRUE)
       list(APPEND CONFIG_OPTIONS "FlTree")
     endif(ENABLE_FL_TREE)
+    if(APPLE AND FLTK_VERSION EQUAL 1.3)
+      # required for system sounds (until cmake updates find_package(FLTK))
+      list(APPEND FLTK_LIBRARIES "-framework AudioToolbox")
+    endif(APPLE AND FLTK_VERSION EQUAL 1.3)
   endif(FLTK_FOUND)
 elseif(ENABLE_QT)
   find_package(Qt4)
@@ -496,7 +500,7 @@ if(ENABLE_NETGEN)
   add_definitions(-DNO_PARALLEL_THREADS)
 endif(ENABLE_NETGEN)
 
-if(ENABLE_TETGEN_NEW AND EXISTS ${CMAKE_SOURCE_DIR}/contrib/TetgenNew/tetgen.h)
+if(ENABLE_TETGEN_NEW AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/TetgenNew/tetgen.h)
   add_subdirectory(contrib/TetgenNew)
   include_directories(contrib/TetgenNew)
   set(HAVE_TETGEN TRUE)
@@ -504,7 +508,7 @@ if(ENABLE_TETGEN_NEW AND EXISTS ${CMAKE_SOURCE_DIR}/contrib/TetgenNew/tetgen.h)
   add_definitions(-DTETLIBRARY)
   message("WARNING: You are including an experimental version of Tetgen "
           "that is KNOWN TO BE BUGGY on 64 bits archs and on WIN32/MSVC.")
-elseif(ENABLE_TETGEN AND EXISTS ${CMAKE_SOURCE_DIR}/contrib/Tetgen/tetgen.h)
+elseif(ENABLE_TETGEN AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Tetgen/tetgen.h)
   add_subdirectory(contrib/Tetgen)
   include_directories(contrib/Tetgen)
   set(HAVE_TETGEN TRUE)
@@ -512,7 +516,7 @@ elseif(ENABLE_TETGEN AND EXISTS ${CMAKE_SOURCE_DIR}/contrib/Tetgen/tetgen.h)
   add_definitions(-DTETLIBRARY)
   message("WARNING: By including Tetgen you have to comply with Tetgen's "
           "special licensing requirements stated in contrib/Tetgen/LICENSE.")
-endif(ENABLE_TETGEN_NEW AND EXISTS ${CMAKE_SOURCE_DIR}/contrib/TetgenNew/tetgen.h)
+endif(ENABLE_TETGEN_NEW AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/TetgenNew/tetgen.h)
 
 if(ENABLE_FOURIER_MODEL)
   find_library(FFTW3_LIB fftw3)
@@ -757,10 +761,10 @@ foreach(OPT ${CONFIG_OPTIONS})
   set(GMSH_CONFIG_OPTIONS "${GMSH_CONFIG_OPTIONS} ${OPT}")
 endforeach(OPT)
 
-configure_file(${CMAKE_SOURCE_DIR}/Common/GmshConfig.h.in 
-               ${CMAKE_BINARY_DIR}/Common/GmshConfig.h)
-configure_file(${CMAKE_SOURCE_DIR}/Common/GmshVersion.h.in
-               ${CMAKE_BINARY_DIR}/Common/GmshVersion.h)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GmshConfig.h.in 
+               ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GmshVersion.h.in
+               ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h)
 
 # process cmake environment variables so we can append them to the -I
 # include commands. This is not recommended (we should only use the
@@ -801,7 +805,7 @@ endif(HAVE_FLTK)
 
 # we could specify include dirs more selectively, but this is simpler
 include_directories(Common Fltk Geo Graphics Mesh Solver Numeric Parser Plugin
-  Post Qt ${EXTERNAL_INCLUDES} ${CMAKE_BINARY_DIR}/Common)
+  Post Qt ${EXTERNAL_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/Common)
 
 # group sources for easier navigation in IDEs
 foreach(DIR ${GMSH_DIRS})
@@ -848,7 +852,7 @@ target_link_libraries(gmsh ${LINK_LIBRARIES})
 # tet classification for large 3D Delaunay grids
 if(CYGWIN)
   set_target_properties(gmsh PROPERTIES LINK_FLAGS 
-    "-Wl,--stack,16777216 ${CMAKE_SOURCE_DIR}/Fltk/Win32Icon.res -mwindows")
+    "-Wl,--stack,16777216 ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/Win32Icon.res -mwindows")
 elseif(MSVC)
   set_target_properties(gmsh PROPERTIES LINK_FLAGS "/STACK:16777216")
 endif(CYGWIN)
@@ -867,7 +871,7 @@ if(BISON AND FLEX)
   add_custom_target(parser 
                     COMMAND ${BISON} -p gmsh_yy --output Gmsh.tab.cpp -d Gmsh.y
                     COMMAND ${FLEX} -P gmsh_yy -o Gmsh.yy.cpp Gmsh.l
-                    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/Parser)
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Parser)
 endif(BISON AND FLEX)
 
 if(UNIX)
@@ -875,18 +879,18 @@ if(UNIX)
   # find files existing at configuration time)
   add_custom_target(purge 
                     COMMAND rm -f `find . -name *~ -o -name *~~`
-                    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
   add_custom_target(etags 
                     COMMAND etags `find . -name *.cpp -o -name *.h -o -name *.y`
-                    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
 endif(UNIX)
 
-set(WELCOME_FILE ${CMAKE_SOURCE_DIR}/doc/WELCOME.txt)
-set(LICENSE_FILE ${CMAKE_SOURCE_DIR}/doc/LICENSE.txt)
-set(CREDITS_FILE ${CMAKE_SOURCE_DIR}/doc/CREDITS.txt)
-file(GLOB TUTORIAL_FILES ${CMAKE_SOURCE_DIR}/tutorial/?*.*)
-file(GLOB DEMO_FILES ${CMAKE_SOURCE_DIR}/demos/?*.*)
-set(TEX_DIR ${CMAKE_SOURCE_DIR}/doc/texinfo)
+set(WELCOME_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/WELCOME.txt)
+set(LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/LICENSE.txt)
+set(CREDITS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/CREDITS.txt)
+file(GLOB TUTORIAL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/?*.*)
+file(GLOB DEMO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/demos/?*.*)
+set(TEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo)
 file(GLOB TEX_SRC ${TEX_DIR}/*.texi)
 set(TEX_OBJ ${TEX_DIR}/gmsh.aux ${TEX_DIR}/gmsh.cp ${TEX_DIR}/gmsh.cps
     ${TEX_DIR}/gmsh.fn ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.ky 
@@ -894,18 +898,18 @@ set(TEX_OBJ ${TEX_DIR}/gmsh.aux ${TEX_DIR}/gmsh.cp ${TEX_DIR}/gmsh.cps
     ${TEX_DIR}/gmsh.tp ${TEX_DIR}/gmsh.tps ${TEX_DIR}/gmsh.txt ${TEX_DIR}/gmsh.vr)
 
 macro(unix2dos VARNAME)
-  file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/unix2dos)
+  file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unix2dos)
   set(UNIX2DOS_FILES)
   foreach(FILE ${${VARNAME}})
     file(READ ${FILE} F0)
     get_filename_component(N ${FILE} NAME)
     if(CYGWIN)
       string(REGEX REPLACE "\n" "\r\n" F1 "${F0}")
-      file(WRITE ${CMAKE_BINARY_DIR}/unix2dos/${N} "${F1}")
+      file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F1}")
     else(CYGWIN) # if not in cygwin, cmake adds '\r's automatically
-      file(WRITE ${CMAKE_BINARY_DIR}/unix2dos/${N} "${F0}")
+      file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F0}")
     endif(CYGWIN)
-    list(APPEND UNIX2DOS_FILES ${CMAKE_BINARY_DIR}/unix2dos/${N})
+    list(APPEND UNIX2DOS_FILES ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N})
   endforeach(FILE)
   set(${VARNAME} ${UNIX2DOS_FILES})
 endmacro(unix2dos)
@@ -937,7 +941,7 @@ install(FILES ${CREDITS_FILE} DESTINATION ${GMSH_DOC})
 install(FILES ${TUTORIAL_FILES} DESTINATION ${GMSH_DOC}/tutorial)
 install(FILES ${DEMO_FILES} DESTINATION ${GMSH_DOC}/demos)
 if(UNIX AND NOT CYGWIN)
-  install(FILES ${CMAKE_SOURCE_DIR}/doc/gmsh.1 DESTINATION share/man/man1)
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/gmsh.1 DESTINATION share/man/man1)
 endif(UNIX AND NOT CYGWIN)
 
 find_program(MAKEINFO makeinfo)
@@ -968,14 +972,14 @@ endif(TEXI2PDF)
 
 if(MAKEINFO AND TEXI2PDF)
   add_custom_target(doc COMMAND ${CMAKE_COMMAND} -E tar zcf 
-                    ${CMAKE_BINARY_DIR}/gmsh-${GMSH_VERSION}-doc.tgz
+                    ${CMAKE_CURRENT_BINARY_DIR}/gmsh-${GMSH_VERSION}-doc.tgz
                     doc/CREDITS.txt doc/LICENSE.txt doc/VERSIONS.txt
                     doc/gmsh.1 doc/texinfo/gmsh.html doc/texinfo/gmsh.info 
                     doc/texinfo/gmsh.pdf doc/texinfo/gmsh.txt
                     COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ}
                     DEPENDS ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.txt 
                     ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.pdf
-                    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
 endif(MAKEINFO AND TEXI2PDF)
 
 if(MAKEINFO OR TEXI2PDF)
@@ -998,7 +1002,7 @@ set(CPACK_PACKAGE_EXECUTABLE "gmsh;Gmsh")
 set(CPACK_STRIP_FILES TRUE)
 set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-source)
 set(CPACK_SOURCE_GENERATOR TGZ)
-set(CPACK_SOURCE_IGNORE_FILES "${CMAKE_BINARY_DIR}" "/CVS/" "/.svn" "~$" 
+set(CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_BINARY_DIR}" "/CVS/" "/.svn" "~$" 
     "DS_Store$" "GmshConfig.h$" "GmshVersion.h$" "/benchmarks/" "/tmp/" 
     "/bin/" "/lib/" "/nightly/" "GPATH" "GRTAGS" "GSYMS" "GTAGS" "/HTML/" 
     "/TetgenNew/") #"/Tetgen.*/.*(cxx|h)")
@@ -1008,25 +1012,25 @@ if(UNIX)
   # (on Mac for example "make package; make package_source" would lead
   # to huge file lists getting generated due to the 'Applications'
   # symlink in the bundle)
-  set(CPACK_INSTALL_COMMANDS "rm -rf ${CMAKE_BINARY_DIR}/_CPack_Packages")
+  set(CPACK_INSTALL_COMMANDS "rm -rf ${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages")
 endif(UNIX)
 
 if(APPLE)
   set(CPACK_GENERATOR Bundle)
   set(CPACK_BUNDLE_NAME Gmsh)
-  file(READ ${CMAKE_SOURCE_DIR}/utils/misc/gmsh_app.plist F0)
+  file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_app.plist F0)
   string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}")
-  file(WRITE ${CMAKE_BINARY_DIR}/Info.plist "${F1}")
-  set(CPACK_BUNDLE_PLIST ${CMAKE_BINARY_DIR}/Info.plist)
-  set(CPACK_BUNDLE_ICON ${CMAKE_SOURCE_DIR}/Fltk/MacIcons.icns)
-  set(CPACK_BUNDLE_STARTUP_COMMAND ${CMAKE_SOURCE_DIR}/utils/misc/gmsh_app.sh)
-  install(FILES ${CMAKE_SOURCE_DIR}/Fltk/MacIconsGeo.icns DESTINATION .
+  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info.plist "${F1}")
+  set(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
+  set(CPACK_BUNDLE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
+  set(CPACK_BUNDLE_STARTUP_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_app.sh)
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsGeo.icns DESTINATION .
           RENAME GmshGeo.icns)
-  install(FILES ${CMAKE_SOURCE_DIR}/Fltk/MacIconsMsh.icns DESTINATION .
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsMsh.icns DESTINATION .
           RENAME GmshMsh.icns)
-  install(FILES ${CMAKE_SOURCE_DIR}/Fltk/MacIconsPos.icns DESTINATION .
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsPos.icns DESTINATION .
           RENAME GmshPos.icns)
-  set(CPACK_PACKAGE_ICON ${CMAKE_SOURCE_DIR}/Fltk/MacIcons.icns)
+  set(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
 elseif(WIN32)
   set(CPACK_GENERATOR ZIP)
 else(APPLE)
@@ -1049,7 +1053,7 @@ else(NOT CMAKE_BUILD_TYPE)
 endif(NOT CMAKE_BUILD_TYPE)
 message("Install prefix: " ${CMAKE_INSTALL_PREFIX})
 message("")
-message("Run 'ccmake ${CMAKE_SOURCE_DIR}' to fine-tune the configuration.")
+message("Run 'ccmake ${CMAKE_CURRENT_SOURCE_DIR}' to fine-tune the configuration.")
 message("")
 
 mark_as_advanced(BISON FLEX GMP_LIB GMSH_EXTRA_VERSION HDF5_LIB MAKEINFO