diff --git a/autobuild.xml b/autobuild.xml
index 40c26e2702716cb35eb8cbe5054f9e3167dcbbc6..cc6e3c710d4c298f0cbff7b86487a156c2890fe9 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -855,6 +855,54 @@
           </map>
         </map>
       </map>
+      <key>havok-source</key>
+      <map>
+        <key>license</key>
+        <string>havok-ares</string>
+        <key>license_file</key>
+        <string>LICENSES/havok.txt</string>
+        <key>name</key>
+        <string>havok-source</string>
+        <key>platforms</key>
+        <map>
+          <key>darwin</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>4ceeb68ac59a2b999a069b27020f76d3</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/falcon_3p-havok-source/rev/261056/arch/Darwin/installer/havok_source-2012.1-darwin-20120702.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin</string>
+          </map>
+          <key>linux</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>0591902d3e7eff848f71915df86d8837</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/falcon_3p-havok-source/rev/261056/arch/Linux/installer/havok_source-2012.1-linux-20120702.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux</string>
+          </map>
+          <key>windows</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>3a860c548aa311dc4e09d17a3a914a98</string>
+              <key>url</key>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/falcon_3p-havok-source/rev/261056/arch/CYGWIN/installer/havok_source-2012.1-windows-20120702.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows</string>
+          </map>
+        </map>
+      </map>
       <key>jpeglib</key>
       <map>
         <key>license</key>
@@ -1095,14 +1143,14 @@
           </map>
         </map>
       </map>
-      <key>llphysicsextensions</key>
+      <key>llphysicsextensions_source</key>
       <map>
         <key>license</key>
-        <string>llphysicsextensions</string>
+        <string>TEMPORARY</string>
         <key>license_file</key>
         <string>LICENSES/llphysicsextensions.txt</string>
         <key>name</key>
-        <string>llphysicsextensions</string>
+        <string>llphysicsextensions_source</string>
         <key>platforms</key>
         <map>
           <key>darwin</key>
@@ -1110,9 +1158,11 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>a860cbd4f30c51c8a3579f952afbdfec</string>
+              <string>5f75735d1092b087b3373ca874c41593</string>
+              <key>hash_algorithm</key>
+              <string>md5</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/stinson_llpathinglibrary/rev/261379/arch/Darwin/installer/llphysicsextensions-0.1-darwin-20120709.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/oz_llphysicsextensions-source/rev/261490/arch/Darwin/installer/llphysicsextensions_source-0.2-darwin-20120710.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -1122,9 +1172,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>7ea1a0269c3468663ad2935245694341</string>
+              <string>911f46354e338a7013f023385a3f905f</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/stinson_llpathinglibrary/rev/261379/arch/Linux/installer/llphysicsextensions-0.1-linux-20120709.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/oz_llphysicsextensions-source/rev/261490/arch/Linux/installer/llphysicsextensions_source-0.2-linux-20120710.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -1134,14 +1184,44 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>3d34d2181d6056521e0d92a8e27a79ee</string>
+              <string>b1212ec910042d186836d496d288984c</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/stinson_llpathinglibrary/rev/261379/arch/CYGWIN/installer/llphysicsextensions-0.1-windows-20120709.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/oz_llphysicsextensions-source/rev/261490/arch/CYGWIN/installer/llphysicsextensions_source-0.2-windows-20120710.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
         </map>
+        <key>version</key>
+        <string>0.2</string>
+      </map>
+      <key>llphysicsextensions_stub</key>
+      <map>
+        <key>license</key>
+        <string>TEMPORARY</string>
+        <key>license_file</key>
+        <string>LICENSES/llphysicsextensions.txt</string>
+        <key>name</key>
+        <string>llphysicsextensions_stub</string>
+        <key>platforms</key>
+        <map>
+          <key>darwin</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>d7665ce1324110bdfad0b846e864f6f9</string>
+              <key>hash_algorithm</key>
+              <string>md5</string>
+              <key>url</key>
+              <string>file:////Users/oz/Work/llphysicsextensions-src/llphysicsextensions_stub-0.2-darwin-20120710.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin</string>
+          </map>
+        </map>
+        <key>version</key>
+        <string>0.2</string>
       </map>
       <key>llqtwebkit</key>
       <map>
diff --git a/indra/cmake/Havok.cmake b/indra/cmake/Havok.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..d3df85fd39d9304fc0821b3ec85fb1af1cf32642
--- /dev/null
+++ b/indra/cmake/Havok.cmake
@@ -0,0 +1,67 @@
+# -*- cmake -*-
+
+use_prebuilt_binary(havok-source)
+set(Havok_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/havok/Source)
+list(APPEND Havok_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/havok/Demo)
+
+set(HAVOK_DEBUG_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/debug/havok)
+set(HAVOK_RELEASE_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/release/havok)
+
+set(HAVOK_LIBS
+    hkBase
+    hkCompat
+    hkGeometryUtilities
+    hkInternal
+    hkSerialize
+    hkSceneData
+    hkpCollide
+    hkpUtilities
+    hkpConstraintSolver
+    hkpDynamics
+    hkpInternal
+    hkaiInternal
+    hkaiPathfinding
+    hkaiAiPhysicsBridge
+    hkcdInternal
+    hkcdCollide
+    hkpVehicle
+    hkVisualize
+    hkaiVisualize
+    hkgpConvexDecomposition
+)
+
+unset(HK_DEBUG_LIBRARIES)
+unset(HK_RELEASE_LIBRARIES)
+unset(HK_LIBRARIES)
+
+foreach(HAVOK_LIB ${HAVOK_LIBS})
+    find_library(HAVOK_DEBUG_LIB_${HAVOK_LIB}   ${HAVOK_LIB} PATHS ${HAVOK_DEBUG_LIBRARY_PATH})
+    find_library(HAVOK_RELEASE_LIB_${HAVOK_LIB} ${HAVOK_LIB} PATHS ${HAVOK_RELEASE_LIBRARY_PATH})
+    
+    if(LINUX)
+    set(cmd "mkdir")
+    set(debug_dir "${HAVOK_DEBUG_LIBRARY_PATH}/${HAVOK_LIB}")
+    set(release_dir "${HAVOK_RELEASE_LIBRARY_PATH}/${HAVOK_LIB}")
+    exec_program( ${cmd} ${HAVOK_DEBUG_LIBRARY_PATH} ARGS ${debug_dir} OUTPUT_VARIABLE rv)
+    exec_program( ${cmd} ${HAVOK_RELEASE_LIBRARY_PATH} ARGS ${release_dir} OUTPUT_VARIABLE rv)
+
+    set(cmd "ar")
+    set(arg " -xv")
+    set(arg "${arg} ../lib${HAVOK_LIB}.a")
+    exec_program( ${cmd} ${debug_dir} ARGS ${arg} OUTPUT_VARIABLE rv)
+    exec_program( ${cmd} ${release_dir} ARGS ${arg} OUTPUT_VARIABLE rv)
+
+    file(GLOB extracted_debug "${debug_dir}/*.o")
+    file(GLOB extracted_release "${release_dir}/*.o")
+    list(APPEND HK_DEBUG_LIBRARIES ${extracted_debug})
+    list(APPEND HK_RELEASE_LIBRARIES ${extracted_release})
+    list(APPEND HK_LIBRARIES debug      ${extracted_debug}
+                 optimized  ${extracted_release})
+    else(LINUX)
+        list(APPEND HK_DEBUG_LIBRARIES   ${HAVOK_DEBUG_LIB_${HAVOK_LIB}})
+        list(APPEND HK_RELEASE_LIBRARIES ${HAVOK_RELEASE_LIB_${HAVOK_LIB}})
+        list(APPEND HK_LIBRARIES debug     ${HAVOK_DEBUG_LIB_${HAVOK_LIB}}
+                                 optimized ${HAVOK_RELEASE_LIB_${HAVOK_LIB}})
+    endif (LINUX)
+endforeach(HAVOK_LIB)
+
diff --git a/indra/cmake/LLPhysicsExtensions.cmake b/indra/cmake/LLPhysicsExtensions.cmake
index 2d26360d79e6176d7d059f0397946c82f04777a2..72ac35e02b176f9e078009f0823f458e2c88dcfa 100644
--- a/indra/cmake/LLPhysicsExtensions.cmake
+++ b/indra/cmake/LLPhysicsExtensions.cmake
@@ -1,31 +1,27 @@
 # -*- cmake -*-
 include(Prebuilt)
 
-if (INSTALL_PROPRIETARY AND NOT STANDALONE)
-   use_prebuilt_binary(llphysicsextensions)
-   set(LLPHYSICS_EXTENSIONS_LIB_NAME llphysicsextensions)
-else (INSTALL_PROPRIETARY AND NOT STANDALONE)
-  use_prebuilt_binary(llphysicsextensionsstub)
-  set(LLPHYSICS_EXTENSIONS_LIB_NAME llphysicsextensionsstub)
-endif (INSTALL_PROPRIETARY AND NOT STANDALONE)
+# Note that the use_prebuilt_binary macros below do not in fact include binaries;
+# the llphysicsextensions_* packages are source only and are built here.
+# The source package and the stub package both build libraries of the same name.
 
-set(LLPHYSICS_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/lib/include)
+# Using the real wrapper or the stub can be controlled with -DHAVOK:BOOL={ON,OFF}
+# the default
+if (INSTALL_PROPRIETARY)
+   set(HAVOK ON CACHE BOOL "Use Havok physics library")
+endif (INSTALL_PROPRIETARY)
 
-set(LLPHYSICS_DEBUG_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/debug)
-set(LLPHYSICS_RELEASE_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/release)
-set(LLPHYSICS_RELWITHDEBINFO_LIBRARY_PATH ${LIBS_PREBUILT_DIR}/lib/relwithdebinfo)
+if (HAVOK)
+   include(Havok)
+   use_prebuilt_binary(llphysicsextensions_source)
+   set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/src)
+   set(LLPHYSICSEXTENSIONS_LIBRARIES    llphysicsextensions)
 
-find_library(LL_PHYSICS_DEBUG_LIB ${LLPHYSICS_EXTENSIONS_LIB_NAME} PATHS ${LLPHYSICS_DEBUG_LIBRARY_PATH})
-find_library(LL_PHYSICS_RELEASE_LIB ${LLPHYSICS_EXTENSIONS_LIB_NAME} PATHS ${LLPHYSICS_RELEASE_LIBRARY_PATH})
-find_library(LL_PHYSICS_RELWITHDEBINFO_LIB ${LLPHYSICS_EXTENSIONS_LIB_NAME} PATHS ${LLPHYSICS_RELWITHDEBINFO_LIBRARY_PATH})
+else (HAVOK)
+   use_prebuilt_binary(llphysicsextensions_stub)
+   set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/stub)
+   set(LLPHYSICSEXTENSIONS_LIBRARIES    llphysicsextensionsstub)
 
-set(LLPHYSICS_LIBRARIES
+endif (HAVOK)
 
-    debug     ${LL_PHYSICS_DEBUG_LIB}
-    optimized ${LL_PHYSICS_RELEASE_LIB}
-)
-
-if (LINUX)
-    list(INSERT LLPHYSICS_LIBRARIES 0 -Wl,--start-group)
-    list(APPEND LLPHYSICS_LIBRARIES -Wl,--end-group)
-endif (LINUX)
+set(LLPHYSICSEXTENSIONS_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/llphysicsextensions)
diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake
index 47f944f9a5dd377ac5ba12b04ab107a07b7e2d1d..c3e3a80fd0d06cf20d8d1af12e3952ff7864d78b 100644
--- a/indra/cmake/Linking.cmake
+++ b/indra/cmake/Linking.cmake
@@ -38,9 +38,8 @@ if (NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Release")
   # packages/lib/release directory to deal with autobuild packages that don't
   # provide (e.g.) lib/debug libraries.
   list(APPEND AUTOBUILD_LIBS_INSTALL_DIRS ${ARCH_PREBUILT_DIRS_RELEASE})
-  message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}, extending AUTOBUILD_LIBS_INSTALL_DIRS")
 endif (NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Release")
-message(STATUS "For ${CMAKE_BUILD_TYPE}, AUTOBUILD_LIBS_INSTALL_DIRS: ${AUTOBUILD_LIBS_INSTALL_DIRS}")
+
 link_directories(${AUTOBUILD_LIBS_INSTALL_DIRS})
 
 if (LINUX)
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 4cbf7aa0430ba27534e8f50c20cb3d61c608bc9e..56ced20abf68c32cd4a56fa1df22e3f4343fce87 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -101,8 +101,8 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
   
   # To support a different SDK update these Xcode settings:
   set(CMAKE_OSX_DEPLOYMENT_TARGET 10.5)
-  set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk)
-  set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "4.0")
+  set(CMAKE_OSX_SYSROOT macosx10.6)
+  set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
   set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf-with-dsym)
 
   # NOTE: To attempt an i386/PPC Universal build, add this on the configure line:
diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake
index df013b1665058e458ede89172c2aa5281ea480a5..cec7c28733f2d9ad8ea22cf1bfc332844efea685 100644
--- a/indra/cmake/ViewerMiscLibs.cmake
+++ b/indra/cmake/ViewerMiscLibs.cmake
@@ -7,10 +7,3 @@ if (NOT STANDALONE)
   use_prebuilt_binary(fontconfig)
 endif(NOT STANDALONE)
 
-if(VIEWER AND NOT STANDALONE)
-  if(EXISTS ${CMAKE_SOURCE_DIR}/newview/res/have_artwork_bundle.marker)
-    message(STATUS "We seem to have an artwork bundle in the tree - brilliant.")
-  else(EXISTS ${CMAKE_SOURCE_DIR}/newview/res/have_artwork_bundle.marker)
-    message(FATAL_ERROR "Didn't find an artwork bundle - this needs to be downloaded separately and unpacked into this tree.  You can probably get it from the same place you got your viewer source.  Thanks!")
-  endif(EXISTS ${CMAKE_SOURCE_DIR}/newview/res/have_artwork_bundle.marker)
-endif(VIEWER AND NOT STANDALONE)
diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt
index 7d0e313ff317219f3550489d676541b35f86f40b..e4d9de7eb64cea94020c14ecaa08f66bebb9aa52 100644
--- a/indra/llprimitive/CMakeLists.txt
+++ b/indra/llprimitive/CMakeLists.txt
@@ -7,12 +7,14 @@ include(LLCommon)
 include(LLMath)
 include(LLMessage)
 include(LLXML)
+include(LLPhysicsExtensions)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
     ${LLMATH_INCLUDE_DIRS}
     ${LLMESSAGE_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
+    ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS}
     ${LIBS_PREBUILT_DIR}/include/collada
     ${LIBS_PREBUILT_DIR}/include/collada/1.4
     )
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index c91d276c8f37e434c0cbd3c60200aa496cb98b16..b5c64925c650cb44176a9358eec8b041d3c8a19b 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -44,6 +44,8 @@ include(VisualLeakDetector)
 include(GLOD)
 include(CMakeCopyIfDifferent)
 
+add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions)
+
 include_directories(
     ${DBUSGLIB_INCLUDE_DIRS}
     ${JSONCPP_INCLUDE_DIR}
@@ -58,6 +60,7 @@ include_directories(
     ${LLINVENTORY_INCLUDE_DIRS}
     ${LLMATH_INCLUDE_DIRS}
     ${LLMESSAGE_INCLUDE_DIRS}
+    ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS}
     ${LLPLUGIN_INCLUDE_DIRS}
     ${LLPRIMITIVE_INCLUDE_DIRS}
     ${LLRENDER_INCLUDE_DIRS}
@@ -1819,6 +1822,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}
     ${CRYPTO_LIBRARIES}
     ${LLLOGIN_LIBRARIES}
     ${LLPHYSICS_LIBRARIES}
+    ${LLPHYSICSEXTENSIONS_LIBRARIES}
     ${TCMALLOC_LIBRARIES}
     )