diff --git a/hpvm/projects/visc-rt/CMakeLists.txt b/hpvm/projects/visc-rt/CMakeLists.txt
index 5767d82cdce8ce74e799e0686a65510a621072bb..5b9449bf2d00ac7a03c085cc1418a95e032d01b7 100644
--- a/hpvm/projects/visc-rt/CMakeLists.txt
+++ b/hpvm/projects/visc-rt/CMakeLists.txt
@@ -1,43 +1,22 @@
-add_custom_target(visc-rt ALL)
-add_custom_command(
-  TARGET visc-rt PRE_BUILD
-  COMMAND ${CMAKE_COMMAND} -E copy
-    ${CMAKE_CURRENT_SOURCE_DIR}/deviceStatusSwitchIntervals.txt
-    ${CMAKE_CURRENT_BINARY_DIR}/deviceStatusSwitchIntervals.txt
-  DEPENDS deviceStatusSwitchIntervals.txt
-  COMMENT "Copying deviceStatusSwitchIntervals.txt")
-add_custom_command(
-  TARGET visc-rt PRE_BUILD
-  COMMAND ${CMAKE_COMMAND} -E copy
-    ${CMAKE_CURRENT_SOURCE_DIR}/device_abstraction.h
-    ${CMAKE_CURRENT_BINARY_DIR}/device_abstraction.h
-  DEPENDS device_abstraction.h
-  COMMENT "Copying device_abstraction.h")
-add_custom_command(
-  TARGET visc-rt PRE_BUILD
-  COMMAND ${CMAKE_COMMAND} -E copy
-    ${CMAKE_CURRENT_SOURCE_DIR}/policy.h
-    ${CMAKE_CURRENT_BINARY_DIR}/policy.h
-  DEPENDS policy.h
-  COMMENT "Copying policy.h")
-add_custom_command(
-  TARGET visc-rt PRE_BUILD
-  COMMAND ${CMAKE_COMMAND} -E copy
-    ${CMAKE_CURRENT_SOURCE_DIR}/visc-rt.h
-    ${CMAKE_CURRENT_BINARY_DIR}/visc-rt.h
-  DEPENDS visc-rt.h
-  COMMENT "Copying visc-rt.h")
-add_custom_command(
-  TARGET visc-rt PRE_BUILD
-  COMMAND ${CMAKE_COMMAND} -E copy
-    ${CMAKE_CURRENT_SOURCE_DIR}/visc-rt.cpp
-    ${CMAKE_CURRENT_BINARY_DIR}/visc-rt.cpp
-  DEPENDS visc-rt.cpp
-  COMMENT "Copying visc-rt.cpp")
-add_custom_command(
-  TARGET visc-rt PRE_BUILD
-  COMMAND ${CMAKE_COMMAND} -E copy
-    ${CMAKE_CURRENT_SOURCE_DIR}/makefile
-    ${CMAKE_CURRENT_BINARY_DIR}/makefile
-  DEPENDS makefile
-  COMMENT "Copying makefile")
+add_definitions(-DNUM_CORES=8)
+
+SET(CMAKE_C_COMPILER ${CMAKE_BINARY_DIR}/bin/clang)
+SET(CMAKE_CXX_COMPILER ${CMAKE_BINARY_DIR}/bin/clang++)
+
+add_llvm_library(visc-rt.ll visc-rt.cpp
+
+  DEPENDS
+  clang
+  llvm-dis
+  )
+
+
+target_compile_options(visc-rt.ll PUBLIC -flto )
+target_compile_options(visc-rt.ll PUBLIC -std=c++11)
+
+add_custom_target(visc-rt.cpp.o ALL
+  COMMAND ar -x ${CMAKE_BINARY_DIR}/lib/libvisc-rt.ll.a
+  COMMAND mv ${CMAKE_BINARY_DIR}/tools/hpvm/projects/visc-rt/visc-rt.cpp.o ${CMAKE_BINARY_DIR}/tools/hpvm/projects/visc-rt/visc-rt.bc
+  COMMAND  ${CMAKE_BINARY_DIR}/bin/llvm-dis  ${CMAKE_BINARY_DIR}/tools/hpvm/projects/visc-rt/visc-rt.bc)
+
+add_dependencies(visc-rt.cpp.o   visc-rt.ll)