--- rstudio-0.99.473-orig/src/cpp/session/CMakeLists.txt	2015-08-12 09:58:43.000000000 +1000
+++ rstudio-0.99.473/src/cpp/session/CMakeLists.txt	2015-08-27 00:51:48.395751378 +1000
@@ -25,30 +25,11 @@
 if(NOT EXISTS "${RSTUDIO_DEPENDENCIES_DIR}/common/mathjax-23")
   message(FATAL_ERROR "Mathjax 2.3 not found (re-run install-dependencies script to install)")
 endif()
-if(NOT EXISTS "${RSTUDIO_DEPENDENCIES_DIR}/common/pandoc")
-  message(FATAL_ERROR "pandoc not found (re-run install-dependencies script to install)")
-endif()
 if(NOT EXISTS "${RSTUDIO_DEPENDENCIES_DIR}/common/rsconnect")
   message(FATAL_ERROR "rsconnect package not found (re-run install-dependencies script to install)")
 endif()
 
 
-# verify libclang is installed
-if(WIN32)
-   set(LIBCLANG_VERSION "3.4")
-else()
-   set(LIBCLANG_VERSION "3.5")
-endif()
-set(LIBCLANG_DIR "${RSTUDIO_DEPENDENCIES_DIR}/common/libclang/${LIBCLANG_VERSION}")
-if(NOT EXISTS "${LIBCLANG_DIR}")
-  message(FATAL_ERROR "libclang ${LIBCLANG_VERSION} not found  (re-run install-dependencies script to install)")
-endif()
-set(LIBCLANG_HEADERS_DIR "${RSTUDIO_DEPENDENCIES_DIR}/common/libclang/builtin-headers")
-if(NOT EXISTS "${LIBCLANG_HEADERS_DIR}")
-  message(FATAL_ERROR "libclang builtin-headers not found  (re-run install-dependencies script to install)")
-endif()
-
-
 # include files
 file(GLOB_RECURSE SESSION_HEADER_FILES "*.h*")
 
@@ -391,18 +372,6 @@
    install(DIRECTORY "${RSTUDIO_DEPENDENCIES_DIR}/common/mathjax-23"
            DESTINATION "${RSTUDIO_INSTALL_SUPPORTING}/resources")
 
-   # install pandoc
-   if(RSTUDIO_PACKAGE_BUILD_SLES)
-      # when producing a SUSE Linux Enterpise build, we want to install the 
-      # static Pandoc binaries (see dependencies/common/install-pandoc)
-      set(PANDOC_EXTENSION_DIR "/static")
-   endif()
-   set(PANDOC_BIN "${RSTUDIO_DEPENDENCIES_DIR}/common/pandoc/1.13.1${PANDOC_EXTENSION_DIR}")
-   file(GLOB PANDOC_FILES "${PANDOC_BIN}/pandoc*")
-   install(FILES ${PANDOC_FILES}
-           PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
-           DESTINATION  ${RSTUDIO_INSTALL_BIN}/pandoc)
-
    # install rsconnect package
    file(GLOB RSCONNECT_PACKAGE "${RSTUDIO_DEPENDENCIES_DIR}/common/rsconnect*.tar.gz")
    install(FILES ${RSCONNECT_PACKAGE}
@@ -420,24 +389,6 @@
    install(DIRECTORY "resources/help_resources"
            DESTINATION ${RSTUDIO_INSTALL_SUPPORTING}/resources)
 
-   # install libclang
-   if(WIN32)
-      file(GLOB LIBCLANG_32_FILES "${LIBCLANG_DIR}/x86/libclang.*")
-      install(PROGRAMS ${LIBCLANG_32_FILES}
-              DESTINATION  ${RSTUDIO_INSTALL_BIN}/rsclang/x86)
-      file(GLOB LIBCLANG_64_FILES "${LIBCLANG_DIR}/x86_64/libclang.*")
-      install(PROGRAMS ${LIBCLANG_64_FILES}
-              DESTINATION  ${RSTUDIO_INSTALL_BIN}/rsclang/x86_64)
-   else()
-      file(GLOB_RECURSE LIBCLANG_FILES "${LIBCLANG_DIR}/libclang.*")
-      install(PROGRAMS ${LIBCLANG_FILES}
-              DESTINATION  ${RSTUDIO_INSTALL_BIN}/rsclang)
-   endif()
-
-   # install libclang builtin-headers
-   install(DIRECTORY "${RSTUDIO_DEPENDENCIES_DIR}/common/libclang/builtin-headers"
-           DESTINATION "${RSTUDIO_INSTALL_SUPPORTING}/resources/libclang")
-
    # install 64 bit binaries if we are on win64
    if(WIN32)
       if(NOT ("$ENV{PROGRAMW6432}" STREQUAL ""))
