diff options
Diffstat (limited to 'extras/libyang')
-rw-r--r-- | extras/libyang/CMakeLists.txt | 45 | ||||
-rw-r--r-- | extras/libyang/cmake/Modules/Packaging.cmake | 33 | ||||
-rw-r--r-- | extras/libyang/libyang.patch | 90 |
3 files changed, 168 insertions, 0 deletions
diff --git a/extras/libyang/CMakeLists.txt b/extras/libyang/CMakeLists.txt new file mode 100644 index 000000000..734e14641 --- /dev/null +++ b/extras/libyang/CMakeLists.txt @@ -0,0 +1,45 @@ +# Copyright (c) 2019 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. +cmake_minimum_required(VERSION 2.8) +project(libyang) + +set(CMAKE_MODULE_PATH + ${CMAKE_MODULE_PATH} + "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/Modules" + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules" +) + +include(ExternalProject) +include(Packaging) + +if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) + set(LIBYANG libyang) +endif() + +execute_process( + COMMAND bash -c "if [ ! -d libyang ]; then + git clone https://github.com/CESNET/libyang.git -b devel --depth 1 libyang; + cd libyang; git apply ${CMAKE_CURRENT_SOURCE_DIR}/libyang.patch; + else + pushd libyang && git pull && popd; + fi" + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/libyang ${CMAKE_CURRENT_BINARY_DIR}/libyang) + +include(Packaging) +if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) + include(Packager) + make_packages() +endif()
\ No newline at end of file diff --git a/extras/libyang/cmake/Modules/Packaging.cmake b/extras/libyang/cmake/Modules/Packaging.cmake new file mode 100644 index 000000000..80dcecb76 --- /dev/null +++ b/extras/libyang/cmake/Modules/Packaging.cmake @@ -0,0 +1,33 @@ +# Copyright (c) 2017-2019 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. + +# Generate DEB / RPM packages + +###################### +# Packages section +###################### + +set(libyang_DESCRIPTION + "libyang is a YANG data modelling language parser and toolkit written (and providing API) in C." + CACHE STRING "Description for deb/rpm package." +) + +set(libyang_DEB_DEPENDENCIES + "libpcre3 (>= 2:8.39-9)" + CACHE STRING "Dependencies for deb/rpm package." +) + +set(libyang_RPM_DEPENDENCIES + "libpcre3 (>= >= 2:8.39-9)" + CACHE STRING "Dependencies for deb/rpm package." +) diff --git a/extras/libyang/libyang.patch b/extras/libyang/libyang.patch new file mode 100644 index 000000000..b5e5c8858 --- /dev/null +++ b/extras/libyang/libyang.patch @@ -0,0 +1,90 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 19b7eb96..6567851f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,5 +1,11 @@ + cmake_minimum_required(VERSION 2.8.12) + ++set(CMAKE_MODULE_PATH ++ ${CMAKE_MODULE_PATH} ++ "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules" ++) ++ ++ + # force out-of-source build + if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) + message(FATAL_ERROR "In-source build is not allowed. Please make a standalone build directory and run CMake from there. You may need to remove CMakeCache.txt.") +@@ -306,14 +312,14 @@ find_package(PCRE REQUIRED) + include_directories(${PCRE_INCLUDE_DIRS}) + target_link_libraries(yang ${PCRE_LIBRARIES}) + +-install(TARGETS yang DESTINATION ${CMAKE_INSTALL_LIBDIR}) +-install(FILES ${headers} ${PROJECT_BINARY_DIR}/src/libyang.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libyang) ++install(TARGETS yang DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libyang) ++install(FILES ${headers} ${PROJECT_BINARY_DIR}/src/libyang.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libyang COMPONENT libyang) + + find_package(PkgConfig) + if(PKG_CONFIG_FOUND) + # generate and install pkg-config file + configure_file("libyang.pc.in" "libyang.pc" @ONLY) +- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libyang.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") ++ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libyang.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" COMPONENT libyang) + # check that pkg-config includes the used path + execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable pc_path pkg-config RESULT_VARIABLE RETURN OUTPUT_VARIABLE PC_PATH ERROR_QUIET) + if(RETURN EQUAL 0) +@@ -399,14 +405,14 @@ configure_file(${PROJECT_SOURCE_DIR}/src/plugin_config.h.in ${PROJECT_BINARY_DIR + # yanglint + add_executable(yanglint ${lintsrc}) + target_link_libraries(yanglint yang) +-install(TARGETS yanglint DESTINATION ${CMAKE_INSTALL_BINDIR}) +-install(FILES ${PROJECT_SOURCE_DIR}/tools/lint/yanglint.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) ++install(TARGETS yanglint DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libyang) ++install(FILES ${PROJECT_SOURCE_DIR}/tools/lint/yanglint.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT libyang) + + #yangre + add_executable(yangre ${resrc}) + target_link_libraries(yangre yang) +-install(TARGETS yangre DESTINATION ${CMAKE_INSTALL_BINDIR}) +-install(FILES ${PROJECT_SOURCE_DIR}/tools/re/yangre.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) ++install(TARGETS yangre DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libyang) ++install(FILES ${PROJECT_SOURCE_DIR}/tools/re/yangre.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT libyang) + + # yang2yin + add_executable(yang2yin ${yang2yinsrc}) +@@ -435,3 +441,10 @@ endif(ENABLE_BUILD_FUZZ_TARGETS) + if(GEN_LANGUAGE_BINDINGS AND GEN_CPP_BINDINGS) + add_subdirectory(swig) + endif() ++ ++ ++include(Packaging) ++if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) ++ include(Packager) ++ make_packages() ++endif() +diff --git a/src/extensions/CMakeLists.txt b/src/extensions/CMakeLists.txt +index e2c18b5e..48885302 100644 +--- a/src/extensions/CMakeLists.txt ++++ b/src/extensions/CMakeLists.txt +@@ -2,7 +2,7 @@ macro(EXTENSION_PLUGIN PLUGIN_NAME SRCS) + add_library(${PLUGIN_NAME} SHARED ${SRCS}) + set_target_properties(${PLUGIN_NAME} PROPERTIES PREFIX "") + target_link_libraries(${PLUGIN_NAME} yang) +- install(TARGETS ${PLUGIN_NAME} DESTINATION ${EXTENSIONS_PLUGINS_DIR_MACRO}) ++ install(TARGETS ${PLUGIN_NAME} DESTINATION ${EXTENSIONS_PLUGINS_DIR_MACRO} COMPONENT libyang) + endmacro(EXTENSION_PLUGIN) + + foreach(EXTENSION ${EXTENSIONS_LIST}) +diff --git a/src/user_types/CMakeLists.txt b/src/user_types/CMakeLists.txt +index 74aae322..e5f67bd7 100644 +--- a/src/user_types/CMakeLists.txt ++++ b/src/user_types/CMakeLists.txt +@@ -2,7 +2,7 @@ macro(USER_TYPE_PLUGIN PLUGIN_NAME SRCS) + add_library(${PLUGIN_NAME} SHARED ${SRCS}) + set_target_properties(${PLUGIN_NAME} PROPERTIES PREFIX "") + target_link_libraries(${PLUGIN_NAME} yang) +- install(TARGETS ${PLUGIN_NAME} DESTINATION ${USER_TYPES_PLUGINS_DIR_MACRO}) ++ install(TARGETS ${PLUGIN_NAME} DESTINATION ${USER_TYPES_PLUGINS_DIR_MACRO} COMPONENT libyang) + endmacro(USER_TYPE_PLUGIN) + + foreach(USER_TYPE ${USER_TYPE_LIST}) |