From 628f91cd73a4bc22a4617cac4d1c6fc06e46fbe3 Mon Sep 17 00:00:00 2001
From: Stephen Birarda <commit@birarda.com>
Date: Mon, 3 Mar 2014 12:15:05 -0800
Subject: [PATCH 1/5] complete quoting of varous Cmake commands, closes #1999

---
 animation-server/CMakeLists.txt             |  14 +--
 assignment-client/CMakeLists.txt            |  26 ++---
 domain-server/CMakeLists.txt                |  12 +--
 interface/CMakeLists.txt                    | 109 ++++++++++----------
 interface/external/faceshift/CMakeLists.txt |   2 +-
 libraries/audio/CMakeLists.txt              |   6 +-
 libraries/avatars/CMakeLists.txt            |  10 +-
 libraries/embedded-webserver/CMakeLists.txt |   2 +-
 libraries/metavoxels/CMakeLists.txt         |   8 +-
 libraries/octree/CMakeLists.txt             |  10 +-
 libraries/particles/CMakeLists.txt          |  12 +--
 libraries/script-engine/CMakeLists.txt      |  16 +--
 libraries/shared/CMakeLists.txt             |  10 +-
 libraries/voxels/CMakeLists.txt             |  12 +--
 svo-viewer/CMakeLists.txt                   |  84 +++++++--------
 tests/CMakeLists.txt                        |   4 +-
 tests/metavoxels/CMakeLists.txt             |  12 +--
 tools/mtc/CMakeLists.txt                    |   2 +-
 voxel-edit/CMakeLists.txt                   |  10 +-
 19 files changed, 179 insertions(+), 182 deletions(-)

diff --git a/animation-server/CMakeLists.txt b/animation-server/CMakeLists.txt
index 77969e06e5..3e33250875 100644
--- a/animation-server/CMakeLists.txt
+++ b/animation-server/CMakeLists.txt
@@ -3,26 +3,26 @@ cmake_minimum_required(VERSION 2.8)
 set(TARGET_NAME animation-server)
 
 set(ROOT_DIR ..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/modules/")
 
 # set up the external glm library
-include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include("${MACRO_DIR}/IncludeGLM.cmake")
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
-include(${MACRO_DIR}/SetupHifiProject.cmake)
+include("${MACRO_DIR}/SetupHifiProject.cmake")
 setup_hifi_project(${TARGET_NAME} TRUE)
 
 # link in the shared library
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
 
 # link in the hifi octree library
-link_hifi_library(octree ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(octree ${TARGET_NAME} "${ROOT_DIR}")
 
 # link in the hifi voxels library
-link_hifi_library(voxels ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(voxels ${TARGET_NAME} "${ROOT_DIR}")
 
 
diff --git a/assignment-client/CMakeLists.txt b/assignment-client/CMakeLists.txt
index 60b9d75338..2df3cb1ab9 100644
--- a/assignment-client/CMakeLists.txt
+++ b/assignment-client/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8)
 set(TARGET_NAME assignment-client)
 
 set(ROOT_DIR ..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/modules/")
@@ -12,26 +12,26 @@ find_package(Qt5Network REQUIRED)
 find_package(Qt5Script REQUIRED)
 find_package(Qt5Widgets REQUIRED)
 
-include(${MACRO_DIR}/SetupHifiProject.cmake)
+include("${MACRO_DIR}/SetupHifiProject.cmake")
 setup_hifi_project(${TARGET_NAME} TRUE)
 
 qt5_use_modules(${TARGET_NAME} Network Script Widgets)
 
 # include glm
-include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include("${MACRO_DIR}/IncludeGLM.cmake")
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 # link in the shared libraries
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(audio ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(avatars ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(octree ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(voxels ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(particles ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(metavoxels ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(script-engine ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(embedded-webserver ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(audio ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(avatars ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(octree ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(voxels ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(particles ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(metavoxels ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(script-engine ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(embedded-webserver ${TARGET_NAME} "${ROOT_DIR}")
 
 if (UNIX)
   target_link_libraries(${TARGET_NAME} ${CMAKE_DL_LIBS})
diff --git a/domain-server/CMakeLists.txt b/domain-server/CMakeLists.txt
index db6048c48f..a4624dbbf7 100644
--- a/domain-server/CMakeLists.txt
+++ b/domain-server/CMakeLists.txt
@@ -3,14 +3,14 @@ cmake_minimum_required(VERSION 2.8)
 set(TARGET_NAME domain-server)
 
 set(ROOT_DIR ..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/modules/")
 
 # set up the external glm library
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 find_package(Qt5Network REQUIRED)
 
@@ -22,17 +22,17 @@ qt5_use_modules(${TARGET_NAME} Network)
 
 # remove and then copy the files for the webserver
 add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
-                   COMMAND ${CMAKE_COMMAND} -E remove_directory
+                   COMMAND "${CMAKE_COMMAND}" -E remove_directory
                    $<TARGET_FILE_DIR:${TARGET_NAME}>/resources/web)
 add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
-                  COMMAND ${CMAKE_COMMAND} -E copy_directory
+                  COMMAND "${CMAKE_COMMAND}" -E copy_directory
                   "${PROJECT_SOURCE_DIR}/resources/web"
                   $<TARGET_FILE_DIR:${TARGET_NAME}>/resources/web)
 
 # link the shared hifi library
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(embedded-webserver ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(embedded-webserver ${TARGET_NAME} "${ROOT_DIR}")
 
 IF (WIN32)
   target_link_libraries(${TARGET_NAME} Winmm Ws2_32)
diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt
index d516a70820..d923404c60 100644
--- a/interface/CMakeLists.txt
+++ b/interface/CMakeLists.txt
@@ -1,17 +1,17 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(ROOT_DIR ..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 set(TARGET_NAME interface)
 project(${TARGET_NAME})
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/modules/")
-set(FACESHIFT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/faceshift)
-set(LIBOVR_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/LibOVR)
-set(SIXENSE_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/Sixense)
-set(VISAGE_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/visage)
+set(FACESHIFT_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external/faceshift")
+set(LIBOVR_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external/LibOVR")
+set(SIXENSE_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external/Sixense")
+set(VISAGE_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external/visage")
 
 if (DEFINED ENV{JOB_ID})
   set(BUILD_SEQ $ENV{JOB_ID})
@@ -34,14 +34,14 @@ if (WIN32)
     add_definitions( -DWINDOWS_LEAN_AND_MEAN ) # needed to make sure windows doesn't go to crazy with its defines
 
     # windows build needs an external glut, we're using freeglut
-    set(GLUT_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external/freeglut)
-    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${GLUT_ROOT_PATH})
+    set(GLUT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/external/freeglut")
+    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${GLUT_ROOT_PATH}")
 
     # windows build needs glew (opengl extention wrangler) this will handle providing access to OpenGL methods after 1.1
     # which are not accessible on windows without glew or some other dynamic linking mechanism
-    set(GLEW_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external/glew)
-    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${GLEW_ROOT_PATH})
-    include_directories(SYSTEM ${GLEW_ROOT_PATH}/include ${GLUT_ROOT_PATH}/include)
+    set(GLEW_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/external/glew")
+    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${GLEW_ROOT_PATH}")
+    include_directories(SYSTEM "${GLEW_ROOT_PATH}/include" "${GLUT_ROOT_PATH}/include")
 
     #set(GL_HEADERS "#define GLEW_STATIC\n#define FREEGLUT_STATIC\n#define FREEGLUT_LIB_PRAGMAS 0\n#include <GL/glew.h>\n#include <GL/wglew.h>\n#include <GL/freeglut_std.h>\n#include <GL/freeglut_ext.h>")
     set(GL_HEADERS "#define GLEW_STATIC\n#include <windowshacks.h>\n#include <GL/glew.h>\n#include <GL/glut.h>")
@@ -49,18 +49,18 @@ if (WIN32)
 endif (WIN32)
 
 # set up the external glm library
-include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include("${MACRO_DIR}/IncludeGLM.cmake")
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 # create the InterfaceConfig.h file based on GL_HEADERS above
-configure_file(InterfaceConfig.h.in ${PROJECT_BINARY_DIR}/includes/InterfaceConfig.h)
-configure_file(InterfaceVersion.h.in ${PROJECT_BINARY_DIR}/includes/InterfaceVersion.h)
+configure_file(InterfaceConfig.h.in "${PROJECT_BINARY_DIR}/includes/InterfaceConfig.h")
+configure_file(InterfaceVersion.h.in "${PROJECT_BINARY_DIR}/includes/InterfaceVersion.h")
 
 # grab the implementation and header files from src dirs
 file(GLOB INTERFACE_SRCS src/*.cpp src/*.h)
 foreach(SUBDIR avatar devices renderer ui starfield)
   file(GLOB_RECURSE SUBDIR_SRCS src/${SUBDIR}/*.cpp src/${SUBDIR}/*.h)
-  set(INTERFACE_SRCS ${INTERFACE_SRCS} ${SUBDIR_SRCS})
+  set(INTERFACE_SRCS ${INTERFACE_SRCS} "${SUBDIR_SRCS}")
 endforeach(SUBDIR)
 
 #windows also includes the faceshift externals, because using a lib doesn't work due to debug/release mismatch
@@ -68,8 +68,11 @@ if (WIN32)
   set(EXTERNAL_SOURCE_SUBDIRS "faceshift")
 endif (WIN32)
 foreach(EXTERNAL_SOURCE_SUBDIR ${EXTERNAL_SOURCE_SUBDIRS})
-  file(GLOB_RECURSE SUBDIR_SRCS external/${EXTERNAL_SOURCE_SUBDIR}/src/*.cpp external/${EXTERNAL_SOURCE_SUBDIR}/src/*.c external/${EXTERNAL_SOURCE_SUBDIR}/src/*.h)
-  set(INTERFACE_SRCS ${INTERFACE_SRCS} ${SUBDIR_SRCS})
+  file(GLOB_RECURSE SUBDIR_SRCS 
+    "external/${EXTERNAL_SOURCE_SUBDIR}/src/*.cpp" 
+    "external/${EXTERNAL_SOURCE_SUBDIR}/src/*.c" 
+    "external/${EXTERNAL_SOURCE_SUBDIR}/src/*.h")
+  set(INTERFACE_SRCS ${INTERFACE_SRCS} "${SUBDIR_SRCS}")
 endforeach(EXTERNAL_SOURCE_SUBDIR)
 
 find_package(Qt5Core REQUIRED)
@@ -85,10 +88,10 @@ find_package(Qt5Xml REQUIRED)
 # grab the ui files in resources/ui
 file (GLOB_RECURSE QT_UI_FILES ui/*.ui)
 # have qt5 wrap them and generate the appropriate header files
-qt5_wrap_ui(QT_UI_HEADERS ${QT_UI_FILES})
+qt5_wrap_ui(QT_UI_HEADERS "${QT_UI_FILES}")
 
 # add them to the interface source files
-set(INTERFACE_SRCS ${INTERFACE_SRCS} ${QT_UI_HEADERS})
+set(INTERFACE_SRCS ${INTERFACE_SRCS} "${QT_UI_HEADERS}")
 
 if (APPLE)
 
@@ -104,16 +107,16 @@ if (APPLE)
   # set where in the bundle to put the resources file
   SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/interface.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
 
-  SET(INTERFACE_SRCS ${INTERFACE_SRCS} ${CMAKE_CURRENT_SOURCE_DIR}/interface.icns)
+  SET(INTERFACE_SRCS ${INTERFACE_SRCS} "${CMAKE_CURRENT_SOURCE_DIR}/interface.icns")
 
   # grab the directories in resources and put them in the right spot in Resources
-  file(GLOB RESOURCE_SUBDIRS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/resources ${CMAKE_CURRENT_SOURCE_DIR}/resources/*)
+  file(GLOB RESOURCE_SUBDIRS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/resources" "${CMAKE_CURRENT_SOURCE_DIR}/resources/*")
   foreach(DIR ${RESOURCE_SUBDIRS})
-    if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/resources/${DIR})
-      FILE(GLOB DIR_CONTENTS resources/${DIR}/*)
-      SET_SOURCE_FILES_PROPERTIES(${DIR_CONTENTS} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${DIR})
+    if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/resources/${DIR}")
+      FILE(GLOB DIR_CONTENTS "resources/${DIR}/*")
+      SET_SOURCE_FILES_PROPERTIES(${DIR_CONTENTS} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/${DIR}")
 
-      SET(INTERFACE_SRCS ${INTERFACE_SRCS} ${DIR_CONTENTS})
+      SET(INTERFACE_SRCS ${INTERFACE_SRCS} "${DIR_CONTENTS}")
     endif()
   endforeach()
 endif (APPLE)
@@ -125,14 +128,14 @@ add_executable(${TARGET_NAME} MACOSX_BUNDLE ${INTERFACE_SRCS})
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
 
 # link required hifi libraries
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(octree ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(voxels ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(metavoxels ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(particles ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(avatars ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(audio ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(script-engine ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(octree ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(voxels ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(metavoxels ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(particles ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(avatars ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(audio ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(script-engine ${TARGET_NAME} "${ROOT_DIR}")
 
 # find required libraries
 find_package(Faceshift)
@@ -145,17 +148,17 @@ find_package(ZLIB)
 # include the Sixense library for Razer Hydra if available
 if (SIXENSE_FOUND AND NOT DISABLE_SIXENSE)
     add_definitions(-DHAVE_SIXENSE)
-    include_directories(SYSTEM ${SIXENSE_INCLUDE_DIRS})
+    include_directories(SYSTEM "${SIXENSE_INCLUDE_DIRS}")
     if (APPLE OR UNIX)
         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${SIXENSE_INCLUDE_DIRS}")
     endif (APPLE OR UNIX)
-    target_link_libraries(${TARGET_NAME} ${SIXENSE_LIBRARIES})
+    target_link_libraries(${TARGET_NAME} "${SIXENSE_LIBRARIES}")
 endif (SIXENSE_FOUND AND NOT DISABLE_SIXENSE)
 
 # likewise with Visage library for webcam feature tracking
 if (VISAGE_FOUND AND NOT DISABLE_VISAGE)
     add_definitions(-DHAVE_VISAGE -DVISAGE_STATIC)
-    include_directories(SYSTEM ${VISAGE_INCLUDE_DIRS})
+    include_directories(SYSTEM "${VISAGE_INCLUDE_DIRS}")
     if (APPLE)
         add_definitions(-DMAC_OS_X)
         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-comment -isystem ${VISAGE_INCLUDE_DIRS}")
@@ -164,39 +167,39 @@ if (VISAGE_FOUND AND NOT DISABLE_VISAGE)
         find_library(NEW_STD_LIBRARY libc++.dylib /usr/lib/)
         target_link_libraries(${TARGET_NAME} ${AVFoundation} ${CoreMedia} ${NEW_STD_LIBRARY})
     endif (APPLE)
-    target_link_libraries(${TARGET_NAME} ${VISAGE_LIBRARIES})
+    target_link_libraries(${TARGET_NAME} "${VISAGE_LIBRARIES}")
 endif (VISAGE_FOUND AND NOT DISABLE_VISAGE)
 
 # and with LibOVR for Oculus Rift
 if (LIBOVR_FOUND AND NOT DISABLE_LIBOVR)
     add_definitions(-DHAVE_LIBOVR)
-    include_directories(SYSTEM ${LIBOVR_INCLUDE_DIRS})
+    include_directories(SYSTEM "${LIBOVR_INCLUDE_DIRS}")
     if (APPLE OR UNIX)
         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${LIBOVR_INCLUDE_DIRS}")
     endif (APPLE OR UNIX)
-    target_link_libraries(${TARGET_NAME} ${LIBOVR_LIBRARIES})
+    target_link_libraries(${TARGET_NAME} "${LIBOVR_LIBRARIES}")
 endif (LIBOVR_FOUND AND NOT DISABLE_LIBOVR)
 
 qt5_use_modules(${TARGET_NAME} Core Gui Multimedia Network OpenGL Script Svg WebKit WebKitWidgets Xml UiTools)
 
 # include headers for interface and InterfaceConfig.
 include_directories(
-    ${PROJECT_SOURCE_DIR}/src
-    ${PROJECT_BINARY_DIR}/includes
+    "${PROJECT_SOURCE_DIR}/src"
+    "${PROJECT_BINARY_DIR}/includes"
 )
 
 # include external library headers
 # use system flag so warnings are supressed
 include_directories(
   SYSTEM
-  ${FACESHIFT_INCLUDE_DIRS}
-  ${GLM_INCLUDE_DIRS}
+  "${FACESHIFT_INCLUDE_DIRS}"
+  "${GLM_INCLUDE_DIRS}"
 )
 
 target_link_libraries(
   ${TARGET_NAME}
-  ${FACESHIFT_LIBRARIES}
-  ${ZLIB_LIBRARIES}
+  "${FACESHIFT_LIBRARIES}"
+  "${ZLIB_LIBRARIES}"
 )
 
 if (APPLE)
@@ -228,8 +231,8 @@ if (APPLE)
 else (APPLE)
     find_package(OpenGL REQUIRED)
     find_package(GLUT REQUIRED)
-    include_directories(${GLUT_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR})
-    target_link_libraries(${TARGET_NAME} ${OPENGL_LIBRARY})
+    include_directories(${GLUT_INCLUDE_DIR} "${OPENGL_INCLUDE_DIR}")
+    target_link_libraries(${TARGET_NAME} "${OPENGL_LIBRARY}")
 endif (APPLE)
 
 # link target to external libraries
@@ -237,8 +240,8 @@ if (WIN32)
     target_link_libraries(
     ${TARGET_NAME}
 
-    ${CMAKE_CURRENT_SOURCE_DIR}/external/glew/lib/Release/Win32/glew32s.lib
-    ${GLUT_ROOT_PATH}/lib/freeglut.lib
+    "${CMAKE_CURRENT_SOURCE_DIR}/external/glew/lib/Release/Win32/glew32s.lib"
+    "${GLUT_ROOT_PATH}/lib/freeglut.lib"
 
     wsock32.lib
     opengl32.lib
@@ -250,15 +253,15 @@ else (WIN32)
 
       target_link_libraries(
         ${TARGET_NAME}
-        ${CMAKE_THREAD_LIBS_INIT}
-        ${GLUT_LIBRARY}
+        "${CMAKE_THREAD_LIBS_INIT}"
+        "${GLUT_LIBRARY}"
       )
   endif (UNIX AND NOT APPLE)
 endif (WIN32)
 
 # install command for OS X bundle
 INSTALL(TARGETS ${TARGET_NAME}
-    BUNDLE DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/install COMPONENT Runtime
-    RUNTIME DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/install COMPONENT Runtime
+    BUNDLE DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/install" COMPONENT Runtime
+    RUNTIME DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/install" COMPONENT Runtime
 )
 
diff --git a/interface/external/faceshift/CMakeLists.txt b/interface/external/faceshift/CMakeLists.txt
index d6c44c5cd8..be1c320c29 100644
--- a/interface/external/faceshift/CMakeLists.txt
+++ b/interface/external/faceshift/CMakeLists.txt
@@ -8,4 +8,4 @@ file(GLOB FACESHIFT_SRCS include/*.h src/*.cpp)
 
 include_directories(include)
 
-add_library(${TARGET_NAME} ${FACESHIFT_SRCS})
+add_library(${TARGET_NAME} "${FACESHIFT_SRCS}")
diff --git a/libraries/audio/CMakeLists.txt b/libraries/audio/CMakeLists.txt
index 2d82fff1e1..30ce287bc3 100644
--- a/libraries/audio/CMakeLists.txt
+++ b/libraries/audio/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(ROOT_DIR ../..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules/")
@@ -13,7 +13,7 @@ include(${MACRO_DIR}/SetupHifiLibrary.cmake)
 setup_hifi_library(${TARGET_NAME})
 
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
\ No newline at end of file
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
\ No newline at end of file
diff --git a/libraries/avatars/CMakeLists.txt b/libraries/avatars/CMakeLists.txt
index d7dedf5381..bcafb32dc6 100644
--- a/libraries/avatars/CMakeLists.txt
+++ b/libraries/avatars/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(ROOT_DIR ../..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules/")
@@ -16,11 +16,11 @@ setup_hifi_library(${TARGET_NAME})
 qt5_use_modules(${TARGET_NAME} Script)
 
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
 
 # link in the hifi voxels library
-link_hifi_library(octree ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(voxels ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(octree ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(voxels ${TARGET_NAME} "${ROOT_DIR}")
diff --git a/libraries/embedded-webserver/CMakeLists.txt b/libraries/embedded-webserver/CMakeLists.txt
index d826349cff..1ab454bf0a 100644
--- a/libraries/embedded-webserver/CMakeLists.txt
+++ b/libraries/embedded-webserver/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(ROOT_DIR ../..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules/")
diff --git a/libraries/metavoxels/CMakeLists.txt b/libraries/metavoxels/CMakeLists.txt
index 491d537b1a..617609f1fa 100644
--- a/libraries/metavoxels/CMakeLists.txt
+++ b/libraries/metavoxels/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(ROOT_DIR ../..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules/")
@@ -12,13 +12,13 @@ find_package(Qt5Network REQUIRED)
 find_package(Qt5Widgets REQUIRED)
 
 include(${MACRO_DIR}/AutoMTC.cmake)
-auto_mtc(${TARGET_NAME} ${ROOT_DIR})
+auto_mtc(${TARGET_NAME} "${ROOT_DIR}")
 
 include(${MACRO_DIR}/SetupHifiLibrary.cmake)
-setup_hifi_library(${TARGET_NAME} ${AUTOMTC_SRC})
+setup_hifi_library(${TARGET_NAME} "${AUTOMTC_SRC}")
 
 qt5_use_modules(${TARGET_NAME} Network Script Widgets)
 
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
diff --git a/libraries/octree/CMakeLists.txt b/libraries/octree/CMakeLists.txt
index 37016966dc..ac59ca454e 100644
--- a/libraries/octree/CMakeLists.txt
+++ b/libraries/octree/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(ROOT_DIR ../..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules/")
@@ -16,12 +16,12 @@ setup_hifi_library(${TARGET_NAME})
 qt5_use_modules(${TARGET_NAME} Widgets)
 
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
 
 # link ZLIB
 find_package(ZLIB)
-include_directories(${ZLIB_INCLUDE_DIRS})
-target_link_libraries(${TARGET_NAME} ${ZLIB_LIBRARIES})
+include_directories("${ZLIB_INCLUDE_DIRS}")
+target_link_libraries(${TARGET_NAME} "${ZLIB_LIBRARIES}")
diff --git a/libraries/particles/CMakeLists.txt b/libraries/particles/CMakeLists.txt
index 3bbff3b433..f7d0088c1b 100644
--- a/libraries/particles/CMakeLists.txt
+++ b/libraries/particles/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(ROOT_DIR ../..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules/")
@@ -16,13 +16,13 @@ setup_hifi_library(${TARGET_NAME})
 qt5_use_modules(${TARGET_NAME} Widgets)
 
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(octree ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(octree ${TARGET_NAME} "${ROOT_DIR}")
 
 # link ZLIB
 find_package(ZLIB)
-include_directories(${ZLIB_INCLUDE_DIRS})
-target_link_libraries(${TARGET_NAME} ${ZLIB_LIBRARIES})
+include_directories("${ZLIB_INCLUDE_DIRS}")
+target_link_libraries(${TARGET_NAME} "${ZLIB_LIBRARIES}")
diff --git a/libraries/script-engine/CMakeLists.txt b/libraries/script-engine/CMakeLists.txt
index 59f41b8cbe..d2a838e543 100644
--- a/libraries/script-engine/CMakeLists.txt
+++ b/libraries/script-engine/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(ROOT_DIR ../..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules/")
@@ -16,15 +16,15 @@ setup_hifi_library(${TARGET_NAME})
 qt5_use_modules(${TARGET_NAME} Widgets)
 
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(octree ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(voxels ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(particles ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(octree ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(voxels ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(particles ${TARGET_NAME} "${ROOT_DIR}")
 
 # link ZLIB
 find_package(ZLIB)
-include_directories(${ZLIB_INCLUDE_DIRS})
-target_link_libraries(${TARGET_NAME} ${ZLIB_LIBRARIES})
+include_directories("${ZLIB_INCLUDE_DIRS}")
+target_link_libraries(${TARGET_NAME} "${ZLIB_LIBRARIES}")
diff --git a/libraries/shared/CMakeLists.txt b/libraries/shared/CMakeLists.txt
index c1fcf2e553..1f23dca926 100644
--- a/libraries/shared/CMakeLists.txt
+++ b/libraries/shared/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(ROOT_DIR ../..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 set(TARGET_NAME shared)
 project(${TARGET_NAME})
@@ -16,18 +16,18 @@ qt5_use_modules(${TARGET_NAME} Network Widgets)
 
 # include GLM
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 
-set(EXTERNAL_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external)
+set(EXTERNAL_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external")
 
 if (WIN32)
     # include headers for external libraries and InterfaceConfig.
-    include_directories(${EXTERNAL_ROOT_DIR})
+    include_directories("${EXTERNAL_ROOT_DIR}")
 endif (WIN32)
 
 # link required libraries on UNIX
 if (UNIX AND NOT APPLE)
     find_package(Threads REQUIRED)
-    target_link_libraries(${TARGET_NAME} ${CMAKE_THREAD_LIBS_INIT})
+    target_link_libraries(${TARGET_NAME} "${CMAKE_THREAD_LIBS_INIT}")
 endif (UNIX AND NOT APPLE)
diff --git a/libraries/voxels/CMakeLists.txt b/libraries/voxels/CMakeLists.txt
index 8a3b0d7325..279168ded8 100644
--- a/libraries/voxels/CMakeLists.txt
+++ b/libraries/voxels/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(ROOT_DIR ../..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules/")
@@ -17,13 +17,13 @@ setup_hifi_library(${TARGET_NAME})
 qt5_use_modules(${TARGET_NAME} Widgets Script)
 
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(octree ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(octree ${TARGET_NAME} "${ROOT_DIR}")
 
 # link ZLIB
 find_package(ZLIB)
-include_directories(${ZLIB_INCLUDE_DIRS})
-target_link_libraries(${TARGET_NAME} ${ZLIB_LIBRARIES})
+include_directories("${ZLIB_INCLUDE_DIRS}")
+target_link_libraries(${TARGET_NAME} "${ZLIB_LIBRARIES}")
diff --git a/svo-viewer/CMakeLists.txt b/svo-viewer/CMakeLists.txt
index 24f07c5a6d..b74612d3eb 100644
--- a/svo-viewer/CMakeLists.txt
+++ b/svo-viewer/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(ROOT_DIR ..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 set(TARGET_NAME svo-viewer)
 project(${TARGET_NAME})
@@ -24,14 +24,14 @@ if (WIN32)
     add_definitions( -DWINDOWS_LEAN_AND_MEAN ) # needed to make sure windows doesn't go to crazy with its defines
 
     # windows build needs an external glut, we're using freeglut
-    set(GLUT_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external/freeglut)
-    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${GLUT_ROOT_PATH})
+    set(GLUT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/external/freeglut")
+    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${GLUT_ROOT_PATH}")
 
     # windows build needs glew (opengl extention wrangler) this will handle providing access to OpenGL methods after 1.1
     # which are not accessible on windows without glew or some other dynamic linking mechanism
-    set(GLEW_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external/glew)
-    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${GLEW_ROOT_PATH})
-    include_directories(SYSTEM ${GLEW_ROOT_PATH}/include ${GLUT_ROOT_PATH}/include)
+    set(GLEW_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/external/glew")
+    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${GLEW_ROOT_PATH}")
+    include_directories(SYSTEM "${GLEW_ROOT_PATH}/include" "${GLUT_ROOT_PATH}/include")
 
     #set(GL_HEADERS "#define GLEW_STATIC\n#define FREEGLUT_STATIC\n#define FREEGLUT_LIB_PRAGMAS 0\n#include <GL/glew.h>\n#include <GL/wglew.h>\n#include <GL/freeglut_std.h>\n#include <GL/freeglut_ext.h>")
     set(GL_HEADERS "#define GLEW_STATIC\n#include <windowshacks.h>\n#include <GL/glew.h>\n#include <GL/glut.h>")
@@ -40,22 +40,25 @@ endif (WIN32)
 
 # set up the external glm library
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 # create the ${TARGET_NAME}-config.h file based on GL_HEADERS above
-configure_file(${TARGET_NAME}-config.h.in ${PROJECT_BINARY_DIR}/includes/${TARGET_NAME}-config.h)
-configure_file(${TARGET_NAME}-version.h.in ${PROJECT_BINARY_DIR}/includes/${TARGET_NAME}-version.h)
+configure_file(${TARGET_NAME}-config.h.in "${PROJECT_BINARY_DIR}/includes/${TARGET_NAME}-config.h")
+configure_file(${TARGET_NAME}-version.h.in "${PROJECT_BINARY_DIR}/includes/${TARGET_NAME}-version.h")
 
 # grab the implementation and header files from src dirs
 file(GLOB APPLICATION_SRCS src/*.c src/*.cpp src/*.h)
 foreach(SUBDIR avatar devices renderer ui starfield)
-  file(GLOB_RECURSE SUBDIR_SRCS src/${SUBDIR}/*.cpp src/${SUBDIR}/*.c src/${SUBDIR}/*.h)
-  set(APPLICATION_SRCS ${APPLICATION_SRCS} ${SUBDIR_SRCS})
+  file(GLOB_RECURSE SUBDIR_SRCS "src/${SUBDIR}/*.cpp" "src/${SUBDIR}/*.c" "src/${SUBDIR}/*.h")
+  set(APPLICATION_SRCS ${APPLICATION_SRCS} "${SUBDIR_SRCS}")
 endforeach(SUBDIR)
 
 foreach(EXTERNAL_SOURCE_SUBDIR ${EXTERNAL_SOURCE_SUBDIRS})
-  file(GLOB_RECURSE SUBDIR_SRCS external/${EXTERNAL_SOURCE_SUBDIR}/src/*.cpp external/${EXTERNAL_SOURCE_SUBDIR}/src/*.c external/${EXTERNAL_SOURCE_SUBDIR}/src/*.h)
-  set(APPLICATION_SRCS ${APPLICATION_SRCS} ${SUBDIR_SRCS})
+  file(GLOB_RECURSE SUBDIR_SRCS 
+    "external/${EXTERNAL_SOURCE_SUBDIR}/src/*.cpp" 
+    "external/${EXTERNAL_SOURCE_SUBDIR}/src/*.c" 
+    "external/${EXTERNAL_SOURCE_SUBDIR}/src/*.h")
+  set(APPLICATION_SRCS ${APPLICATION_SRCS} "${SUBDIR_SRCS}")
 endforeach(EXTERNAL_SOURCE_SUBDIR)
 
 find_package(Qt5Core REQUIRED)
@@ -71,10 +74,10 @@ find_package(Qt5Xml REQUIRED)
 # grab the ui files in resources/ui
 file (GLOB_RECURSE QT_UI_FILES ui/*.ui)
 # have qt5 wrap them and generate the appropriate header files
-qt5_wrap_ui(QT_UI_HEADERS ${QT_UI_FILES})
+qt5_wrap_ui(QT_UI_HEADERS "${QT_UI_FILES}")
 
 # add them to the application source files
-set(APPLICATION_SRCS ${APPLICATION_SRCS} ${QT_UI_HEADERS})
+set(APPLICATION_SRCS ${APPLICATION_SRCS} "${QT_UI_HEADERS}")
 
 if (APPLE)
 
@@ -88,18 +91,18 @@ if (APPLE)
   SET(MACOSX_BUNDLE_ICON_FILE ${TARGET_NAME}.icns)
 
   # set where in the bundle to put the resources file
-  SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_NAME}.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
+  SET_SOURCE_FILES_PROPERTIES("${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_NAME}.icns" PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
 
-  SET(APPLICATION_SRCS ${APPLICATION_SRCS} ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_NAME}.icns)
+  SET(APPLICATION_SRCS ${APPLICATION_SRCS} "${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_NAME}.icns")
 
   # grab the directories in resources and put them in the right spot in Resources
-  file(GLOB RESOURCE_SUBDIRS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/resources ${CMAKE_CURRENT_SOURCE_DIR}/resources/*)
+  file(GLOB RESOURCE_SUBDIRS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/resources" "${CMAKE_CURRENT_SOURCE_DIR}/resources/*")
   foreach(DIR ${RESOURCE_SUBDIRS})
-    if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/resources/${DIR})
-      FILE(GLOB DIR_CONTENTS resources/${DIR}/*)
-      SET_SOURCE_FILES_PROPERTIES(${DIR_CONTENTS} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${DIR})
+    if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/resources/${DIR}")
+      FILE(GLOB DIR_CONTENTS "resources/${DIR}/*")
+      SET_SOURCE_FILES_PROPERTIES(${DIR_CONTENTS} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/${DIR}")
 
-      SET(APPLICATION_SRCS ${APPLICATION_SRCS} ${DIR_CONTENTS})
+      SET(APPLICATION_SRCS ${APPLICATION_SRCS} "${DIR_CONTENTS}")
     endif()
   endforeach()
 endif (APPLE)
@@ -111,9 +114,9 @@ add_executable(${TARGET_NAME} MACOSX_BUNDLE ${APPLICATION_SRCS})
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
 
 # link required hifi libraries
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(octree ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(voxels ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(octree ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(voxels ${TARGET_NAME} "${ROOT_DIR}")
 
 # find required libraries
 find_package(GLM REQUIRED)
@@ -122,22 +125,13 @@ find_package(ZLIB)
 qt5_use_modules(${TARGET_NAME} Core Gui Multimedia Network OpenGL Script Svg WebKit WebKitWidgets Xml UiTools)
 
 # include headers for interface
-include_directories(
-    ${PROJECT_SOURCE_DIR}/src
-    ${PROJECT_BINARY_DIR}/includes
-)
+include_directories("${PROJECT_SOURCE_DIR}/src" "${PROJECT_BINARY_DIR}/includes")
 
 # include external library headers
 # use system flag so warnings are supressed
-include_directories(
-  SYSTEM
-  ${GLM_INCLUDE_DIRS}
-)
+include_directories(SYSTEM "${GLM_INCLUDE_DIRS}")
 
-target_link_libraries(
-  ${TARGET_NAME}
-  ${ZLIB_LIBRARIES}
-)
+target_link_libraries(${TARGET_NAME} "${ZLIB_LIBRARIES}")
 
 if (APPLE)
     # link in required OS X frameworks and include the right GL headers
@@ -168,8 +162,8 @@ if (APPLE)
 else (APPLE)
     find_package(OpenGL REQUIRED)
     find_package(GLUT REQUIRED)
-    include_directories(${GLUT_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR})
-    target_link_libraries(${TARGET_NAME} ${OPENGL_LIBRARY})
+    include_directories("${GLUT_INCLUDE_DIR}" "${OPENGL_INCLUDE_DIR}")
+    target_link_libraries(${TARGET_NAME} "${OPENGL_LIBRARY}")
 endif (APPLE)
 
 # link target to external libraries
@@ -177,8 +171,8 @@ if (WIN32)
     target_link_libraries(
     ${TARGET_NAME}
 
-    ${CMAKE_CURRENT_SOURCE_DIR}/external/glew/lib/Release/Win32/glew32s.lib
-    ${GLUT_ROOT_PATH}/lib/freeglut.lib
+    "${CMAKE_CURRENT_SOURCE_DIR}/external/glew/lib/Release/Win32/glew32s.lib"
+    "${GLUT_ROOT_PATH}/lib/freeglut.lib"
 
     wsock32.lib
     opengl32.lib
@@ -190,15 +184,15 @@ else (WIN32)
 
       target_link_libraries(
         ${TARGET_NAME}
-        ${CMAKE_THREAD_LIBS_INIT}
-        ${GLUT_LIBRARY}
+        "${CMAKE_THREAD_LIBS_INIT}"
+        "${GLUT_LIBRARY}"
       )
   endif (UNIX AND NOT APPLE)
 endif (WIN32)
 
 # install command for OS X bundle
 INSTALL(TARGETS ${TARGET_NAME}
-    BUNDLE DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/install COMPONENT Runtime
-    RUNTIME DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/install COMPONENT Runtime
+    BUNDLE DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/install" COMPONENT Runtime
+    RUNTIME DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/install" COMPONENT Runtime
 )
 
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index e817ffe506..2f56d337fa 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,9 +1,9 @@
 cmake_minimum_required(VERSION 2.8)
 
 # add the test directories
-file(GLOB TEST_SUBDIRS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*)
+file(GLOB TEST_SUBDIRS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*")
 foreach(DIR ${TEST_SUBDIRS})
-    if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${DIR})
+    if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${DIR}")
         add_subdirectory(${DIR})
     endif()
 endforeach()
diff --git a/tests/metavoxels/CMakeLists.txt b/tests/metavoxels/CMakeLists.txt
index 9d21dd2a44..39730ab015 100644
--- a/tests/metavoxels/CMakeLists.txt
+++ b/tests/metavoxels/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8)
 set(TARGET_NAME metavoxel-tests)
 
 set(ROOT_DIR ../..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules/")
@@ -13,21 +13,21 @@ find_package(Qt5Script REQUIRED)
 find_package(Qt5Widgets REQUIRED)
 
 include(${MACRO_DIR}/AutoMTC.cmake)
-auto_mtc(${TARGET_NAME} ${ROOT_DIR})
+auto_mtc(${TARGET_NAME} "${ROOT_DIR}")
 
 include(${MACRO_DIR}/SetupHifiProject.cmake)
-setup_hifi_project(${TARGET_NAME} TRUE ${AUTOMTC_SRC})
+setup_hifi_project(${TARGET_NAME} TRUE "${AUTOMTC_SRC}")
 
 qt5_use_modules(${TARGET_NAME} Network Script Widgets)
 
 #include glm
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 # link in the shared libraries
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
-link_hifi_library(metavoxels ${TARGET_NAME} ${ROOT_DIR})
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(metavoxels ${TARGET_NAME} "${ROOT_DIR}")
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
 
 IF (WIN32)
 	target_link_libraries(${TARGET_NAME} Winmm Ws2_32)
diff --git a/tools/mtc/CMakeLists.txt b/tools/mtc/CMakeLists.txt
index 95cb95d573..a9588fd30d 100644
--- a/tools/mtc/CMakeLists.txt
+++ b/tools/mtc/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8)
 set(TARGET_NAME mtc)
 
 set(ROOT_DIR ../..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 include(${MACRO_DIR}/SetupHifiProject.cmake)
 setup_hifi_project(${TARGET_NAME} TRUE)
diff --git a/voxel-edit/CMakeLists.txt b/voxel-edit/CMakeLists.txt
index e0aa0750d2..d394cea518 100644
--- a/voxel-edit/CMakeLists.txt
+++ b/voxel-edit/CMakeLists.txt
@@ -3,14 +3,14 @@ cmake_minimum_required(VERSION 2.8)
 set(TARGET_NAME voxel-edit)
 
 set(ROOT_DIR ..)
-set(MACRO_DIR ${ROOT_DIR}/cmake/macros)
+set(MACRO_DIR "${ROOT_DIR}/cmake/macros")
 
 # setup for find modules
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/modules/")
 
 # set up the external glm library
 include(${MACRO_DIR}/IncludeGLM.cmake)
-include_glm(${TARGET_NAME} ${ROOT_DIR})
+include_glm(${TARGET_NAME} "${ROOT_DIR}")
 
 include(${MACRO_DIR}/SetupHifiProject.cmake)
 setup_hifi_project(${TARGET_NAME} TRUE)
@@ -20,13 +20,13 @@ qt5_use_modules(${TARGET_NAME} Script)
 
 # link in the shared library
 include(${MACRO_DIR}/LinkHifiLibrary.cmake)
-link_hifi_library(shared ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(shared ${TARGET_NAME} "${ROOT_DIR}")
 
 # link in the hifi octree library
-link_hifi_library(octree ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(octree ${TARGET_NAME} "${ROOT_DIR}")
 
 # link in the hifi voxels library
-link_hifi_library(voxels ${TARGET_NAME} ${ROOT_DIR})
+link_hifi_library(voxels ${TARGET_NAME} "${ROOT_DIR}")
 
 IF (WIN32)
 	target_link_libraries(${TARGET_NAME} Winmm Ws2_32)

From e16a3250060cacc6cd8562c7fb21ba382643a170 Mon Sep 17 00:00:00 2001
From: Stephen Birarda <commit@birarda.com>
Date: Mon, 3 Mar 2014 16:36:37 -0800
Subject: [PATCH 2/5] optionally do not reference OPENGL_INCLUDE_DIR for win

---
 interface/CMakeLists.txt  | 6 +++++-
 svo-viewer/CMakeLists.txt | 6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt
index d923404c60..646ad3c167 100644
--- a/interface/CMakeLists.txt
+++ b/interface/CMakeLists.txt
@@ -231,7 +231,11 @@ if (APPLE)
 else (APPLE)
     find_package(OpenGL REQUIRED)
     find_package(GLUT REQUIRED)
-    include_directories(${GLUT_INCLUDE_DIR} "${OPENGL_INCLUDE_DIR}")
+    
+    if (OPENGL_INCLUDE_DIR)
+      include_directories("${GLUT_INCLUDE_DIR}" "${OPENGL_INCLUDE_DIR}")
+    endif (OPENGL_INCLUDE_DIR)
+    
     target_link_libraries(${TARGET_NAME} "${OPENGL_LIBRARY}")
 endif (APPLE)
 
diff --git a/svo-viewer/CMakeLists.txt b/svo-viewer/CMakeLists.txt
index b74612d3eb..c76cc4209b 100644
--- a/svo-viewer/CMakeLists.txt
+++ b/svo-viewer/CMakeLists.txt
@@ -162,7 +162,11 @@ if (APPLE)
 else (APPLE)
     find_package(OpenGL REQUIRED)
     find_package(GLUT REQUIRED)
-    include_directories("${GLUT_INCLUDE_DIR}" "${OPENGL_INCLUDE_DIR}")
+    
+    if (OPENGL_INCLUDE_DIR)
+      include_directories("${GLUT_INCLUDE_DIR}" "${OPENGL_INCLUDE_DIR}")
+    endif (OPENGL_INCLUDE_DIR)
+    
     target_link_libraries(${TARGET_NAME} "${OPENGL_LIBRARY}")
 endif (APPLE)
 

From cade36356dd43f42979a7212c0386febc1ab41c4 Mon Sep 17 00:00:00 2001
From: Stephen Birarda <commit@birarda.com>
Date: Mon, 3 Mar 2014 16:38:39 -0800
Subject: [PATCH 3/5] some more string quoting in cmake files

---
 cmake/macros/AutoMTC.cmake          | 2 +-
 cmake/macros/IncludeGLM.cmake       | 4 ++--
 cmake/macros/LinkHifiLibrary.cmake  | 4 ++--
 cmake/macros/SetupHifiProject.cmake | 6 +++---
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/cmake/macros/AutoMTC.cmake b/cmake/macros/AutoMTC.cmake
index f29c3400bb..1c818d9548 100644
--- a/cmake/macros/AutoMTC.cmake
+++ b/cmake/macros/AutoMTC.cmake
@@ -1,6 +1,6 @@
 macro(AUTO_MTC TARGET ROOT_DIR)
     if (NOT TARGET mtc)
-        add_subdirectory(${ROOT_DIR}/tools/mtc ${ROOT_DIR}/tools/mtc)
+        add_subdirectory("${ROOT_DIR}/tools/mtc" "${ROOT_DIR}/tools/mtc")
     endif (NOT TARGET mtc)
     
     set(AUTOMTC_SRC ${TARGET}_automtc.cpp)
diff --git a/cmake/macros/IncludeGLM.cmake b/cmake/macros/IncludeGLM.cmake
index f20f3ef8a8..02116f2d0f 100644
--- a/cmake/macros/IncludeGLM.cmake
+++ b/cmake/macros/IncludeGLM.cmake
@@ -1,7 +1,7 @@
 MACRO(INCLUDE_GLM TARGET ROOT_DIR)
-	set(GLM_ROOT_DIR ${ROOT_DIR}/externals)
+	set(GLM_ROOT_DIR "${ROOT_DIR}/externals")
 	find_package(GLM REQUIRED)
-	include_directories(${GLM_INCLUDE_DIRS})
+	include_directories("${GLM_INCLUDE_DIRS}")
 IF(APPLE OR UNIX)
   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${GLM_INCLUDE_DIRS}")
 ENDIF(APPLE OR UNIX)
diff --git a/cmake/macros/LinkHifiLibrary.cmake b/cmake/macros/LinkHifiLibrary.cmake
index 6a4122d583..925953efcf 100644
--- a/cmake/macros/LinkHifiLibrary.cmake
+++ b/cmake/macros/LinkHifiLibrary.cmake
@@ -1,9 +1,9 @@
 MACRO(LINK_HIFI_LIBRARY LIBRARY TARGET ROOT_DIR)
     if (NOT TARGET ${LIBRARY})
-        add_subdirectory(${ROOT_DIR}/libraries/${LIBRARY} ${ROOT_DIR}/libraries/${LIBRARY})
+        add_subdirectory("${ROOT_DIR}/libraries/${LIBRARY}" "${ROOT_DIR}/libraries/${LIBRARY}")
     endif (NOT TARGET ${LIBRARY})
     
-    include_directories(${ROOT_DIR}/libraries/${LIBRARY}/src)
+    include_directories("${ROOT_DIR}/libraries/${LIBRARY}/src")
 
     add_dependencies(${TARGET} ${LIBRARY})
     target_link_libraries(${TARGET} ${LIBRARY})
diff --git a/cmake/macros/SetupHifiProject.cmake b/cmake/macros/SetupHifiProject.cmake
index be77d7e244..3b187e6be4 100644
--- a/cmake/macros/SetupHifiProject.cmake
+++ b/cmake/macros/SetupHifiProject.cmake
@@ -6,9 +6,9 @@ macro(SETUP_HIFI_PROJECT TARGET INCLUDE_QT)
     
     file(GLOB SRC_SUBDIRS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/*)
     foreach(DIR ${SRC_SUBDIRS})
-      if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/${DIR})
-        FILE(GLOB DIR_CONTENTS src/${DIR}/*)
-        SET(TARGET_SRCS ${TARGET_SRCS} ${DIR_CONTENTS})
+      if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/${DIR}")
+        FILE(GLOB DIR_CONTENTS "src/${DIR}/*")
+        SET(TARGET_SRCS ${TARGET_SRCS} "${DIR_CONTENTS}")
       endif()
     endforeach()
     

From 897c2b826755a1412b88e900f379b0b66759db3d Mon Sep 17 00:00:00 2001
From: Philip Rosedale <philip@highfidelity.io>
Date: Mon, 3 Mar 2014 22:14:59 -0800
Subject: [PATCH 4/5] Add sounds for gun, reticle, mouse look firing

---
 examples/gun.js | 149 +++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 117 insertions(+), 32 deletions(-)

diff --git a/examples/gun.js b/examples/gun.js
index e7cd2973e2..17587e3810 100644
--- a/examples/gun.js
+++ b/examples/gun.js
@@ -3,16 +3,30 @@
 //  hifi
 //
 //  Created by Brad Hefta-Gaub on 12/31/13.
+//  Modified by Philip on 3/3/14
 //  Copyright (c) 2013 HighFidelity, Inc. All rights reserved.
 //
-//  This is an example script that turns the hydra controllers into a particle gun.
+//  This is an example script that turns the hydra controllers and mouse into a particle gun.
 //  It reads the controller, watches for trigger pulls, and launches particles.
-//  The particles it creates have a script that when they collide with Voxels, the
-//  particle will change it's color to match the voxel it hits, and then delete the
-//  voxel.
+//  When particles collide with voxels they blow little holes out of the voxels. 
 //
 //
 
+var lastX = 0;
+var lastY = 0;
+var yawFromMouse = 0;
+var pitchFromMouse = 0;
+var isMouseDown = false; 
+
+var BULLET_VELOCITY = 5.0;
+
+// Load some sound to use for loading and firing 
+var fireSound = new Sound("https://s3-us-west-1.amazonaws.com/highfidelity-public/sounds/Guns/GUN-SHOT2.raw");
+var loadSound = new Sound("https://s3-us-west-1.amazonaws.com/highfidelity-public/sounds/Guns/Gun_Reload_Weapon22.raw");
+var impactSound = new Sound("https://s3-us-west-1.amazonaws.com/highfidelity-public/sounds/Guns/BulletImpact2.raw");
+var audioOptions = new AudioInjectionOptions();
+audioOptions.volume = 0.9;
+
 // initialize our triggers
 var triggerPulled = new Array();
 var numberOfTriggers = Controller.getNumberOfTriggers();
@@ -20,7 +34,60 @@ for (t = 0; t < numberOfTriggers; t++) {
     triggerPulled[t] = false;
 }
 
-function checkController() {
+//  Create a reticle image in center of screen 
+var screenSize = Controller.getViewportDimensions();
+var reticle = Overlays.addOverlay("image", {
+                    x: screenSize.x / 2 - 16,
+                    y: screenSize.y / 2 - 16,
+                    width: 32,
+                    height: 32,
+                    imageURL: "https://s3-us-west-1.amazonaws.com/highfidelity-public/images/reticle.png",
+                    color: { red: 255, green: 255, blue: 255},
+                    alpha: 1
+                });
+
+function shootBullet(position, velocity) {
+    var BULLET_SIZE = 0.02;
+    Particles.addParticle(
+        { position: position, 
+          radius: BULLET_SIZE, 
+          color: {  red: 200, green: 0, blue: 0 },  
+          velocity: velocity, 
+          gravity: {  x: 0, y: -0.1, z: 0 }, 
+          damping: 0 });
+
+    // Play firing sounds 
+    audioOptions.position = position;
+    Audio.playSound(fireSound, audioOptions);
+}
+
+function particleCollisionWithVoxel(particle, voxel) {
+    var HOLE_SIZE = 0.25;
+    var particleProperties = Particles.getParticleProperties(particle);
+    var position = particleProperties.position; 
+    Particles.deleteParticle(particle);
+    //  Make a hole in this voxel 
+    Voxels.eraseVoxel(position.x, position.y, position.z, HOLE_SIZE);
+    //audioOptions.position = position; 
+    audioOptions.position = Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation()));
+    Audio.playSound(impactSound, audioOptions); 
+}
+
+function update() {
+
+    //  Check for mouseLook movement, update rotation 
+       // rotate body yaw for yaw received from mouse
+    var newOrientation = Quat.multiply(MyAvatar.orientation, Quat.fromVec3( { x: 0, y: yawFromMouse, z: 0 } ));
+    MyAvatar.orientation = newOrientation;
+    yawFromMouse = 0;
+
+    // apply pitch from mouse
+    var newPitch = MyAvatar.headPitch + pitchFromMouse;
+    MyAvatar.headPitch = newPitch;
+    pitchFromMouse = 0;
+
+    //  Check hydra controller for trigger press 
+
     var numberOfTriggers = Controller.getNumberOfTriggers();
     var numberOfSpatialControls = Controller.getNumberOfSpatialControls();
     var controllersPerTrigger = numberOfSpatialControls / numberOfTriggers;
@@ -45,6 +112,7 @@ function checkController() {
             }
 
             if (shootABullet) {
+                
                 var palmController = t * controllersPerTrigger; 
                 var palmPosition = Controller.getSpatialControlPosition(palmController);
 
@@ -67,36 +135,53 @@ function checkController() {
                                  y: palmToFingerTipVector.y * linearVelocity,
                                  z: palmToFingerTipVector.z * linearVelocity };
 
-                // This is the script for the particles that this gun shoots.
-                var script = 
-                         " function collisionWithVoxel(voxel) { " +
-                         "   print('collisionWithVoxel(voxel)... '); " +
-                         "   print('myID=' + Particle.getID() + '\\n'); " +
-                         "   var voxelColor = { red: voxel.red, green: voxel.green, blue: voxel.blue };" +
-                         "   var voxelAt = { x: voxel.x, y: voxel.y, z: voxel.z };" +
-                         "   var voxelScale = voxel.s;" +
-                         "   print('voxelColor=' + voxel.red + ', ' + voxel.green + ', ' + voxel.blue + '\\n'); " +
-                         "   var myColor = Particle.getColor();" +
-                         "   print('myColor=' + myColor.red + ', ' + myColor.green + ', ' + myColor.blue + '\\n'); " +
-                         "   Particle.setColor(voxelColor); " +
-                         "   Voxels.eraseVoxel(voxelAt.x, voxelAt.y, voxelAt.z, voxelScale);  " +
-                         "   print('Voxels.eraseVoxel(' + voxelAt.x + ', ' + voxelAt.y + ', ' + voxelAt.z + ', ' + voxelScale + ')... \\n'); " +
-                         " } " +
-                         " Particle.collisionWithVoxel.connect(collisionWithVoxel); ";
-                
-                Particles.addParticle(
-                    { position: position, 
-                      radius: 0.05, 
-                      color: {  red: 128, green: 128, blue: 128 },  
-                      velocity: velocity, 
-                      gravity: {  x: 0, y: -0.1, z: 0 }, 
-                      damping: 0, 
-                      script: script });
+                shootBullet(position, velocity);
             }
         }
     }
 }
 
+function mousePressEvent(event) {
+    isMouseDown = true;
+    lastX = event.x;
+    lastY = event.y;
+    audioOptions.position = Vec3.sum(Camera.getPosition(), Quat.getFront(Camera.getOrientation()));
+    Audio.playSound(loadSound, audioOptions);
+}
+
+function mouseReleaseEvent(event) { 
+    //  position 
+    var DISTANCE_FROM_CAMERA = 2.0;
+    var camera = Camera.getPosition();
+    var forwardVector = Quat.getFront(Camera.getOrientation());
+    var newPosition = Vec3.sum(camera, Vec3.multiply(forwardVector, DISTANCE_FROM_CAMERA));
+    var velocity = Vec3.multiply(forwardVector, BULLET_VELOCITY);
+    shootBullet(newPosition, velocity);
+    isMouseDown = false;
+}
+
+function mouseMoveEvent(event) {
+    if (isMouseDown) {
+        var MOUSE_YAW_SCALE = -0.25;
+        var MOUSE_PITCH_SCALE = -12.5;
+        var FIXED_MOUSE_TIMESTEP = 0.016;
+        yawFromMouse += ((event.x - lastX) * MOUSE_YAW_SCALE * FIXED_MOUSE_TIMESTEP);
+        pitchFromMouse += ((event.y - lastY) * MOUSE_PITCH_SCALE * FIXED_MOUSE_TIMESTEP);
+        lastX = event.x;
+        lastY = event.y;
+    }
+}
+
+function scriptEnding() {
+    Overlays.deleteOverlay(reticle); 
+}
+
+Particles.particleCollisionWithVoxel.connect(particleCollisionWithVoxel);
+Script.scriptEnding.connect(scriptEnding);
+Script.willSendVisualDataCallback.connect(update);
+Controller.mousePressEvent.connect(mousePressEvent);
+Controller.mouseReleaseEvent.connect(mouseReleaseEvent);
+Controller.mouseMoveEvent.connect(mouseMoveEvent);
+
+
 
-// register the call back so it fires before each data send
-Script.willSendVisualDataCallback.connect(checkController);

From 6ff629dcfd5557f364a577527b674cc8e48a46cd Mon Sep 17 00:00:00 2001
From: Andrzej Kapolka <drzej.k@gmail.com>
Date: Tue, 4 Mar 2014 11:23:44 -0800
Subject: [PATCH 5/5] Use different unused variable warning suppressor for GCC.

---
 libraries/metavoxels/src/Bitstream.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/libraries/metavoxels/src/Bitstream.h b/libraries/metavoxels/src/Bitstream.h
index c06c4c3b5f..b5db4782b7 100644
--- a/libraries/metavoxels/src/Bitstream.h
+++ b/libraries/metavoxels/src/Bitstream.h
@@ -450,6 +450,13 @@ public:
     bool operator==(const X& first, const X& second); \
     bool operator!=(const X& first, const X& second); \
     static const int* _TypePtr##X = &X::Type;
+#elif __GNUC__
+#define DECLARE_STREAMABLE_METATYPE(X) Q_DECLARE_METATYPE(X) \
+    Bitstream& operator<<(Bitstream& out, const X& obj); \
+    Bitstream& operator>>(Bitstream& in, X& obj); \
+    bool operator==(const X& first, const X& second); \
+    bool operator!=(const X& first, const X& second); \
+    __attribute__((unused)) static const int* _TypePtr##X = &X::Type;
 #else
 #define STRINGIFY(x) #x
 #define DECLARE_STREAMABLE_METATYPE(X) Q_DECLARE_METATYPE(X) \