diff --git a/extras/vom/CMakeLists.txt b/extras/vom/CMakeLists.txt
index 3a32117..4947235 100644
--- a/extras/vom/CMakeLists.txt
+++ b/extras/vom/CMakeLists.txt
@@ -26,6 +26,7 @@
   OUTPUT_STRIP_TRAILING_WHITESPACE
 )
 
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
 set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
@@ -36,6 +37,7 @@
 find_package(Boost OPTIONAL_COMPONENTS system filesystem)
 
 add_subdirectory(vom)
+add_subdirectory(cmake)
 
 add_vpp_packaging(
   NAME "vom"
diff --git a/extras/vom/cmake/CMakeLists.txt b/extras/vom/cmake/CMakeLists.txt
new file mode 100644
index 0000000..dff24a9
--- /dev/null
+++ b/extras/vom/cmake/CMakeLists.txt
@@ -0,0 +1,22 @@
+# Copyright (c) 2018 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+install(
+  FILES
+  VOMConfig.cmake
+
+  DESTINATION
+  lib/cmake/vom
+
+  COMPONENT vom
+)
diff --git a/extras/vom/cmake/FindCheck.cmake b/extras/vom/cmake/FindCheck.cmake
new file mode 100644
index 0000000..e5f399c
--- /dev/null
+++ b/extras/vom/cmake/FindCheck.cmake
@@ -0,0 +1,71 @@
+# Copyright (c) 2018 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+########################################
+#
+# Find the Libcheck library and includes
+# This module sets:
+#  CHECK_FOUND:          True if Libcheck was found
+#  CHECK_LIBRARY:        The Libcheck library
+#  CHECK_INCLUDE_DIR:    The Libcheck include dir
+#
+
+set(CHECK_SEARCH_PATH_LIST
+  ${CHECK_HOME}
+  $ENV{CHECK_HOME}
+  /usr/local
+  /opt
+  /usr
+)
+
+find_path(CHECK_INCLUDE_DIR check.h
+  HINTS ${CHECK_SEARCH_PATH_LIST}
+  PATH_SUFFIXES include
+  DOC "Find the check includes"
+)
+
+find_library(CHECK_LIBRARY NAMES check
+  HINTS ${CHECK_SEARCH_PATH_LIST}
+  PATH_SUFFIXES lib
+  DOC "Find the check libraries"
+)
+
+execute_process(
+  COMMAND grep "CHECK_MICRO_VERSION" ${CHECK_INCLUDE_DIR}/check.h
+  COMMAND grep -Eo [0-9]+
+  OUTPUT_VARIABLE CHECK_MICRO_VERSION
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+execute_process(
+  COMMAND grep "CHECK_MINOR_VERSION" ${CHECK_INCLUDE_DIR}/check.h
+  COMMAND grep -Eo [0-9]+
+  OUTPUT_VARIABLE CHECK_MINOR_VERSION
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+execute_process(
+  COMMAND grep "CHECK_MAJOR_VERSION" ${CHECK_INCLUDE_DIR}/check.h
+  COMMAND grep -Eo [0-9]+
+  OUTPUT_VARIABLE CHECK_MAJOR_VERSION
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+set(CHECK_VERSION "${CHECK_MAJOR_VERSION}.${CHECK_MINOR_VERSION}.${CHECK_MICRO_VERSION}")
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+  Check
+  REQUIRED_VARS CHECK_LIBRARY CHECK_INCLUDE_DIR
+  VERSION_VAR CHECK_VERSION
+)
\ No newline at end of file
diff --git a/extras/vom/cmake/FindSubunit.cmake b/extras/vom/cmake/FindSubunit.cmake
new file mode 100644
index 0000000..121cb5f
--- /dev/null
+++ b/extras/vom/cmake/FindSubunit.cmake
@@ -0,0 +1,47 @@
+# Copyright (c) 2018 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+########################################
+#
+# Find the Libsubunit library and includes
+# This module sets:
+#  SUBUNIT_FOUND:          True if Libsubunit was found
+#  SUBUNIT_LIBRARY:        The Libsubunit library
+#  SUBUNIT_INCLUDE_DIR:    The Libsubunit include dir
+#
+
+set(SUBUNIT_SEARCH_PATH_LIST
+  ${SUBUNIT_HOME}
+  $ENV{SUBUNIT_HOME}
+  /usr/local
+  /opt
+  /usr
+)
+
+find_path(SUBUNIT_INCLUDE_DIR
+  NAMES child.h
+  HINTS ${SUBUNIT_SEARCH_PATH_LIST}
+  PATH_SUFFIXES include subunit
+)
+
+find_library(SUBUNIT_LIBRARY
+  NAMES subunit
+  PATH_SUFFIXES lib
+  HINTS ${SUBUNIT_SEARCH_PATH_LIST}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+  Subunit
+  REQUIRED_VARS SUBUNIT_LIBRARY SUBUNIT_INCLUDE_DIR
+)
\ No newline at end of file
diff --git a/extras/vom/cmake/VOMConfig.cmake b/extras/vom/cmake/VOMConfig.cmake
new file mode 100644
index 0000000..a2ea6b6
--- /dev/null
+++ b/extras/vom/cmake/VOMConfig.cmake
@@ -0,0 +1,26 @@
+# Copyright (c) 2018 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(CMAKE_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
+
+find_path(VOM_INCLUDE_DIR PATH_SUFFIXES NAMES vom/om.hpp)
+
+if(VOM_INCLUDE_DIR)
+  include_directories (${VOM_INCLUDE_DIR})
+else()
+  message(FATAL_ERROR "VOM headers, libraries and/or tools not found")
+endif()
+
+set(VPP_EXTERNAL_PROJECT 1)
+
+include(CheckCCompilerFlag)
diff --git a/extras/vom/vom/CMakeLists.txt b/extras/vom/vom/CMakeLists.txt
index ad5a66e..92a4348 100644
--- a/extras/vom/vom/CMakeLists.txt
+++ b/extras/vom/vom/CMakeLists.txt
@@ -300,7 +300,7 @@
   vxlan_tunnel.hpp
 )
 
-add_definitions(-Wall -Werror -std=gnu++11)
+add_definitions(-Wall -Werror -std=gnu++11 -g)
 add_library(vom SHARED ${VOM_SOURCES})
 if (VOM_LIB_VERSION)
   set_target_properties(vom PROPERTIES SOVERSION ${VOM_LIB_VERSION})
