diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1d4db94500..a065fa5ce3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,3 +10,168 @@ get_filename_component(NWT_API_INCLUDES networktables/cpp/include REALPATH)
add_subdirectory(hal)
add_subdirectory(networktables/cpp)
add_subdirectory(wpilibc)
+
+
+
+set(CPACK_PACKAGE_NAME "WPILib")
+set(CPACK_PACKAGE_VENDOR "Worcester Polytechnic Institute")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "WPILib, NetworkTables and HAL for RoboRIO target
+ .
+ This package contains the shared objects for WPILib, NetworkTables, and HAL for the 2015 target on the RoboRIO")
+if (NOT DEFINED CPACK_PACKAGE_VERSION)
+ set(CPACK_PACKAGE_VERSION "2014.9999.DEV")
+endif (NOT DEFINED CPACK_PACKAGE_VERSION)
+SET(DEBIAN_ARCHITECTURE armv7a-vfp)
+SET(CPACK_PACKAGE_CONTACT "Brad Miller at WPI")
+
+# Compute the md5sums file by doing a recursion of directory: `DIRECTORY`
+MACRO(COMPUTE_MD5SUMS DIRECTORY OUTPUT_FILE)
+
+ # Super ugly and barely readable but you need that in order to
+ # work around a deficiency in EXECUTE_PROCESS which does not have dependencie scanning
+ # TODO: look at this more
+ FILE(WRITE ${CMAKE_BINARY_DIR}/md5sum.cmake "
+
+FILE(GLOB_RECURSE MD5SUM_INPUT_FILES ${DIRECTORY}/*)
+EXECUTE_PROCESS(
+ COMMAND ${CMAKE_COMMAND} -E md5sum \${MD5SUM_INPUT_FILES}
+ WORKING_DIRECTORY ${DIRECTORY}
+ OUTPUT_VARIABLE md5sum_VAR
+ RESULT_VARIABLE md5sum_RES
+)
+STRING(REPLACE ${DIRECTORY}/
+\"\" md5sum_VAR_clean
+ \${md5sum_VAR})
+FILE(WRITE ${CMAKE_BINARY_DIR}/md5sums \${md5sum_VAR_clean})
+")
+
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${OUTPUT_FILE}
+ COMMAND cmake
+ ARGS -P ${CMAKE_BINARY_DIR}/md5sum.cmake
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${DIRECTORY} ${CMAKE_BINARY_DIR}/md5sum.cmake
+ COMMENT "Generating md5sums"
+ )
+
+ENDMACRO(COMPUTE_MD5SUMS)
+
+IF (NOT CMAKE_AR)
+ MESSAGE(FATAL_ERROR "ar is required but could not be found. If it is in a non-standard location, use -DCMAKE_AR=path/to/ar")
+ELSE (NOT CMAKE_AR)
+ IF (NOT DEFINED "CPACK_PACKAGE_NAME")
+ MESSAGE(FATAL_ERROR "Package name was not set, please set the package name")
+ ENDIF (NOT DEFINED "CPACK_PACKAGE_NAME")
+
+ # debian policy enforce lower case for package name
+ STRING(TOLOWER ${CPACK_PACKAGE_NAME} DEBIAN_PACKAGE_NAME)
+ IF(NOT DEBIAN_PACKAGE_DEPENDS)
+ SET(DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.11.1-r7), libgcc1 (>= 4.4.1)")
+ ENDIF(NOT DEBIAN_PACKAGE_DEPENDS)
+ IF(NOT DEBIAN_PACKAGE_VERSION)
+ SET(DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
+ ENDIF(NOT DEBIAN_PACKAGE_VERSION)
+ IF(NOT DEBIAN_PACKAGE_SECTION)
+ SET(DEBIAN_PACKAGE_SECTION devel)
+ ENDIF(NOT DEBIAN_PACKAGE_SECTION)
+
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_BINARY_DIR}/debian-binary
+ COMMAND ${CMAKE_COMMAND}
+ ARGS -E echo "2.0" > ${CMAKE_BINARY_DIR}/debian-binary
+ COMMENT "Generating debian-binary"
+ VERBATIM)
+
+ FILE(WRITE ${CMAKE_BINARY_DIR}/control
+"Package: ${DEBIAN_PACKAGE_NAME}
+Version: ${CPACK_PACKAGE_VERSION}
+Section: ${DEBIAN_PACKAGE_SECTION}
+Priority: optional
+Architecture: ${DEBIAN_ARCHITECTURE}
+Depends: ${DEBIAN_PACKAGE_DEPENDS}
+Maintainer: ${CPACK_PACKAGE_CONTACT}
+Description: ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}
+")
+ FILE(WRITE ${CMAKE_BINARY_DIR}/postrm "#! /bin/sh
+ldconfig
+")
+FILE(WRITE ${CMAKE_BINARY_DIR}/postinst "#! /bin/sh
+ldconfig
+")
+ # let's create a temp directory to call 'DESTDIR=... make install' into:
+ # cleanup
+ FILE(REMOVE ${CMAKE_BINARY_DIR}/debian_package)
+ # make dir:
+ FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/debian_package)
+
+ # calling cmake -P cmake_install.cmake is the same as calling make install:
+ ADD_CUSTOM_TARGET(deb_destdir_install
+ COMMAND DESTDIR=${CMAKE_BINARY_DIR}/debian_package ${CMAKE_COMMAND} -DCOMPONENT=lib -P cmake_install.cmake
+ DEPENDS ${CMAKE_BINARY_DIR}/cmake_install.cmake WPILibAthena NetworkTables HALAthena
+ COMMENT "Building debian_package directory with DESTDIR"
+ )
+ ADD_DEPENDENCIES(deb_destdir_install all)
+
+
+ ADD_CUSTOM_TARGET(control_perms
+ COMMAND chmod +x ${CMAKE_BINARY_DIR}/postinst ${CMAKE_BINARY_DIR}/postrm
+ DEPENDS ${CMAKE_BINARY_DIR}/postinst ${CMAKE_BINARY_DIR}/postrm
+ COMMENT "Setting executable permissions"
+ )
+
+ # create data.tar.gz from the make install stuff
+ # all files starts with: ./usr
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_BINARY_DIR}/data.tar.gz
+ COMMAND cmake -E tar
+ ARGS cfz ${CMAKE_BINARY_DIR}/data.tar.gz .
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/debian_package
+ DEPENDS ${CMAKE_BINARY_DIR}/debian_package
+ COMMENT "Generating data.tar.gz"
+ )
+
+
+ # get all the files to be installed:
+ COMPUTE_MD5SUMS(
+ ${CMAKE_BINARY_DIR}/debian_package
+ ${CMAKE_BINARY_DIR}/md5sums
+ )
+
+ # create a tarball (control.tar.gz) of control and md5sums
+ # files need to be in relative path: ./md5sums ./control ...
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_BINARY_DIR}/control.tar.gz
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ COMMAND cmake -E tar
+ ARGS cfz ${CMAKE_BINARY_DIR}/control.tar.gz control md5sums postinst postrm
+ DEPENDS ${CMAKE_BINARY_DIR}/control ${CMAKE_BINARY_DIR}/md5sums ${CMAKE_BINARY_DIR}/postinst ${CMAKE_BINARY_DIR}/postrm control_perms
+ COMMENT "Generating control.tar.gz"
+ )
+
+
+
+ # Warning order is important:
+ # ar -r your-package-name.deb debian-binary control.tar.gz data.tar.gz
+ # eg: cmake_2.4.5-1_i386.deb
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_BINARY_DIR}/${DEBIAN_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${DEBIAN_ARCHITECTURE}.deb
+ COMMAND ${CMAKE_AR}
+ ARGS -r ${CMAKE_BINARY_DIR}/${DEBIAN_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${DEBIAN_ARCHITECTURE}.deb
+ ${CMAKE_BINARY_DIR}/debian-binary
+ ${CMAKE_BINARY_DIR}/control.tar.gz ${CMAKE_BINARY_DIR}/data.tar.gz
+ DEPENDS ${CMAKE_BINARY_DIR}/debian-binary ${CMAKE_BINARY_DIR}/control.tar.gz ${CMAKE_BINARY_DIR}/data.tar.gz
+ COMMENT "Generating deb package"
+ )
+
+ # the final target:
+ ADD_CUSTOM_TARGET(package
+ DEPENDS ${CMAKE_BINARY_DIR}/${DEBIAN_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${DEBIAN_ARCHITECTURE}.deb
+ )
+ ADD_DEPENDENCIES(package deb_destdir_install)
+
+
+ # BUG: debian_package is not removed during a 'make clean':
+ SET_DIRECTORY_PROPERTIES(PROPERTIES
+ ADDITIONAL_MAKE_CLEAN_FILES "debian-binary;control;md5sums;debian_package;")
+ENDIF (NOT CMAKE_AR)
+
diff --git a/cmake/pom.xml b/cmake/pom.xml
index f74b997ae5..a2d48f25c9 100644
--- a/cmake/pom.xml
+++ b/cmake/pom.xml
@@ -24,7 +24,8 @@
-
+
+
@@ -34,6 +35,28 @@
compile
+
+ package
+
+
+
+ cmake3
+ generate-resources
+
+ generate
+
+
+
+
+
+
+
+
+ cmake4
+ generate-resources
+
+ compile
+
install
@@ -65,7 +88,7 @@
-
+
@@ -81,7 +104,10 @@
+ cpp-sos=${version-info}
+
+
diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/src/main/resources/cpp-zip/ant/build.xml b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/src/main/resources/cpp-zip/ant/build.xml
index 6f9627176f..f4b59f16da 100644
--- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/src/main/resources/cpp-zip/ant/build.xml
+++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/src/main/resources/cpp-zip/ant/build.xml
@@ -2,6 +2,8 @@
+
+
@@ -25,36 +27,6 @@
Target IP: ${target}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
[athena-deploy] Killing running program
[athena-deploy] Copying code over.
+
+
+
+
+ Found version of WPILib: ${installedWpilibSo} (latest)
+
+
+ Found version of WPILib: ${installedWpilibSo}
+ Upgrading WPILib to ${cpp-sos}...
+
+
+
+