incremental
diff --git a/static/CMakeLists.txt b/static/CMakeLists.txt
new file mode 100644
index 0000000..58bfdbb
--- /dev/null
+++ b/static/CMakeLists.txt
@@ -0,0 +1,93 @@
+set(HTML_ASSETS
+    hello.html
+    login.html
+    partial-eventlog.html
+    partial-fruinfo.html
+    partial-home-list.html
+    partial-kvm.html
+    partial-systeminfo.html
+    websocket.html
+)
+
+
+set(JAVASCRIPT_ASSETS
+    js/selController.js
+    js/lodash.core.js
+    js/ui-bootstrap-tpls-2.1.3.js
+    js/angular-cookies.js
+    js/angular-websocket.js
+    js/angular-ui-router.js
+    js/restangular.js
+    js/kvm-controller.js
+    js/angular-resource.js
+    js/angular-sanitize.js
+    js/bmcApp.js
+    js/angular-animate.js
+    js/run_prettify.js
+    js/angular.js
+    js/versionController.js
+    noVNC/utils/parse.js
+    noVNC/utils/inflator.partial.js
+    noVNC/karma.conf.js
+    noVNC/include/inflator.js
+    noVNC/include/keysym.js
+    noVNC/include/chrome-app/tcp-client.js
+    noVNC/include/ui.js
+    noVNC/include/keysymdef.js
+    noVNC/include/websock.js
+    noVNC/include/util.js
+    noVNC/include/base64.js
+    noVNC/include/logo.js
+    noVNC/include/input.js
+    noVNC/include/rfb.js
+    noVNC/include/des.js
+    noVNC/include/playback.js
+    noVNC/include/xtscancodes.js
+    noVNC/include/keyboard.js
+    noVNC/include/webutil.js
+    noVNC/include/display.js
+)
+
+set(CSS_ASSETS
+    css/intel.css
+    css/bootstrap.css
+    css/font-awesome.css
+    css/bootstrap-theme.css
+    css/prettify.css
+    noVNC/tests/viewport.css
+    noVNC/include/base.css
+    noVNC/include/blue.css
+    noVNC/include/black.css
+)
+
+set(STATIC_ASSETS_OUT "")
+foreach(JAVASCRIPT_ASSET ${JAVASCRIPT_ASSETS})
+    set(OUTPUT_FILENAME ${CMAKE_CURRENT_BINARY_DIR}/${JAVASCRIPT_ASSET})
+    get_filename_component(FOLDERNAME ${OUTPUT_FILENAME} DIRECTORY)
+    file(MAKE_DIRECTORY "${FOLDERNAME}")
+    # TODO only minify if not a debug build
+    add_custom_command(OUTPUT ${OUTPUT_FILENAME} 
+        COMMAND closure-compiler --language_in=ECMASCRIPT5
+        --js  "${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET}"
+        --js_output_file "${CMAKE_CURRENT_BINARY_DIR}/${JAVASCRIPT_ASSET}"
+
+        DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET}"
+        COMMENT "Minifying ${JAVASCRIPT_ASSET}"
+    )
+    list(APPEND STATIC_ASSETS_OUT ${CMAKE_CURRENT_BINARY_DIR}/${JAVASCRIPT_ASSET})
+endforeach(JAVASCRIPT_ASSET)
+
+add_custom_target(minifyjs ALL DEPENDS ${STATIC_ASSETS_OUT})
+
+set(CXX_STATIC_ASSETS_OUTPUT_FILE ${CMAKE_BINARY_DIR}/generated/webassets.cpp)
+set(WEBASSET_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/build_web_assets.py")
+
+add_custom_command(OUTPUT ${CXX_STATIC_ASSETS_OUTPUT_FILE}
+    COMMAND ${WEBASSET_SCRIPT} 
+        -o ${CXX_STATIC_ASSETS_OUTPUT_FILE} -i ${STATIC_ASSETS_OUT}
+
+    DEPENDS ${STATIC_ASSETS_OUT} ${WEBASSET_SCRIPT}
+    COMMENT "Building CPP file ${CXX_STATIC_ASSETS_OUTPUT_FILE}"
+)
+
+add_custom_target(packagestaticcpp ALL DEPENDS ${CXX_STATIC_ASSETS_OUTPUT_FILE})
\ No newline at end of file