From e3282bae27064b3d9788e235db50441fd2fe1a70 Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Tue, 30 Jul 2019 06:20:39 -0700 Subject: [PATCH] vom: export/install cmake files Type: feature allow other projects to use cmake modules to find VOM Change-Id: I00e01e9bec3ecf79903cd522d2770bdb70e5399b Signed-off-by: Neale Ranns --- extras/vom/CMakeLists.txt | 2 ++ extras/vom/cmake/CMakeLists.txt | 22 ++++++++++++ extras/vom/cmake/FindCheck.cmake | 71 ++++++++++++++++++++++++++++++++++++++ extras/vom/cmake/FindSubunit.cmake | 47 +++++++++++++++++++++++++ extras/vom/cmake/VOMConfig.cmake | 26 ++++++++++++++ extras/vom/vom/CMakeLists.txt | 2 +- 6 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 extras/vom/cmake/CMakeLists.txt create mode 100644 extras/vom/cmake/FindCheck.cmake create mode 100644 extras/vom/cmake/FindSubunit.cmake create mode 100644 extras/vom/cmake/VOMConfig.cmake diff --git a/extras/vom/CMakeLists.txt b/extras/vom/CMakeLists.txt index 3a32117882a..4947235717e 100644 --- a/extras/vom/CMakeLists.txt +++ b/extras/vom/CMakeLists.txt @@ -26,6 +26,7 @@ execute_process( 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(Threads REQUIRED) 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 00000000000..dff24a99180 --- /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 00000000000..e5f399c5449 --- /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 00000000000..121cb5f10e2 --- /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 00000000000..a2ea6b60491 --- /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 ad5a66e3521..92a4348dba4 100644 --- a/extras/vom/vom/CMakeLists.txt +++ b/extras/vom/vom/CMakeLists.txt @@ -300,7 +300,7 @@ list(APPEND VOM_HEADERS 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}) -- 2.16.6