From 2e80ecb4c87b92b0347f1bb9c8aa986309484742 Mon Sep 17 00:00:00 2001 From: Marcin Zyla Date: Fri, 1 Mar 2024 21:08:44 +0100 Subject: [PATCH 1/3] refactor: CMakeLists cleanup --- CMakeLists.txt | 146 ++++++++++------------------------------ upf/upf_test.c | 179 ------------------------------------------------- 2 files changed, 34 insertions(+), 291 deletions(-) delete mode 100644 upf/upf_test.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 4159106..6291d76 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,17 +41,6 @@ endif() include (Packager) # Dependencies - -# message(STATUS "Looking for hyperscan") -# pkg_check_modules(HS libhs) - -# if(HS_FOUND) -# include_directories(${HS_INCLUDE_DIRS}) -# message(STATUS "Found Hyperscan in ${HYPERSCAN_INCLUDE_DIRS}") -# else() -# message(WARNING "-- Hyperscan not found") -# endif() - message(STATUS "Looking for Hyperscan") find_path(HYPERSCAN_INCLUDE_DIR NAMES hs/hs.h) find_library(HYPERSCAN_LIB1 NAMES hs) @@ -68,84 +57,21 @@ find_package(VPP REQUIRED) include_directories(${VPP_INCLUDE_DIR}) -set(UPF_PLUGIN_SOURCES - upf/upf.c - upf/upf_api.c - upf/upf_cli.c - upf/upf_gtpu_encap.c - upf/upf_gtpu_decap.c - upf/upf_flow_node.c - upf/upf_classify.c - upf/upf_adf.c - upf/upf_input.c - upf/upf_forward.c - upf/upf_session_dpo.c - upf/pfcp.c - upf/upf_pfcp.c - upf/upf_pfcp_api.c - upf/upf_pfcp_server.c - upf/upf_pfcp_session_server.c - upf/upf_proxy_accept.c - upf/upf_proxy_input.c - upf/upf_proxy_output.c - upf/upf_tcp_forward.c - upf/upf_proxy.c - upf/upf_app_db.c - upf/upf_ipfilter.c - upf/upf_app_dpo.c - upf/upf_ipfix.c - upf/upf_ipfix_templates.c - upf/flowtable_init.c - upf/flowtable.c - upf/unittest.c - - upf/upf_gtpu_encap.c - upf/upf_gtpu_decap.c - upf/upf_flow_node.c - upf/upf_classify.c - upf/upf_proxy_accept.c - upf/upf_proxy_input.c - upf/upf_proxy_output.c - upf/upf_tcp_forward.c - upf/upf_input.c - upf/upf_forward.c - upf/upf_session_dpo.c -) - -set(UPF_PLUGIN_HEADER_FILES - upf/upf.h - upf/pfcp.h - upf/upf_pfcp.h - upf/upf_pfcp_api.h - upf/upf_pfcp_server.h - upf/upf_proxy.h - upf/upf_app_db.h - upf/upf_ipfilter.h - upf/upf_app_dpo.h - upf/upf_app_db.h - upf/flowtable.h - upf/flowtable_tcp.h - upf/upf_buffer_opaque.h - upf/upf_ipfix.h - upf/upf_ipfix_templates.h - upf/upf_gtpu_error.def - upf/version.h - upf/llist.h -) +# sources +set(DEST_DIR "${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf") -set(UPF_API_TEST_SOURCE_FILES - upf/upf_test.c -) +file (GLOB_RECURSE UPF_PLUGIN_SOURCES "upf/*.c") +file(GLOB_RECURSE UPF_PLUGIN_HEADER_FILES "upf/*.h" "upf/*.def") set(UPF_API_GENERATED_FILES - ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.h - ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api_types.h - ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api_enum.h + ${DEST_DIR}/upf.api.h + ${DEST_DIR}/upf.api_types.h + ${DEST_DIR}/upf.api_enum.h ) set(UPF_VAPI_GENERATED_FILES - ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.vapi.h - ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.vapi.hpp + ${DEST_DIR}/upf.api.vapi.h + ${DEST_DIR}/upf.api.vapi.hpp ) if (NOT VPP_HOME) @@ -166,24 +92,25 @@ elseif (CMAKE_BUILD_TYPE STREQUAL "Debug") endif() execute_process( - COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf + COMMAND mkdir -p ${DEST_DIR} ) add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.h ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api_types.h ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api_enum.h - COMMAND ${VPP_HOME}/bin/vppapigen ARGS --includedir ${VPP_HOME}/include --input ${CMAKE_CURRENT_SOURCE_DIR}/upf/upf.api --output ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.h --outputdir ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/ + OUTPUT ${DEST_DIR}/upf.api.h ${DEST_DIR}/upf.api_types.h ${DEST_DIR}/upf.api_enum.h + COMMAND ${VPP_HOME}/bin/vppapigen ARGS --includedir ${VPP_HOME}/include --input ${CMAKE_CURRENT_SOURCE_DIR}/upf/upf.api --output ${DEST_DIR}/upf.api.h --outputdir ${DEST_DIR}/ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/upf/upf.api - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.json - COMMAND ${VPP_HOME}/bin/vppapigen ARGS JSON --includedir ${VPP_HOME}/include --input ${CMAKE_CURRENT_SOURCE_DIR}/upf/upf.api --output ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.json --outputdir ${CMAKE_CURRENT_BINARY_DIR}/vapi/ - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.vapi.h - COMMAND python3 ${VPP_HOME}/share/vpp/vapi_c_gen.py ARGS ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.json - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.vapi.hpp - COMMAND python3 ${VPP_HOME}/share/vpp/vapi_cpp_gen.py ARGS ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.json + OUTPUT ${DEST_DIR}/upf.api.json + COMMAND ${VPP_HOME}/bin/vppapigen ARGS JSON --includedir ${VPP_HOME}/include --input ${CMAKE_CURRENT_SOURCE_DIR}/upf/upf.api --output ${DEST_DIR}/upf.api.json --outputdir ${CMAKE_CURRENT_BINARY_DIR}/vapi/ + OUTPUT ${DEST_DIR}/upf.api.vapi.h + COMMAND python3 ${VPP_HOME}/share/vpp/vapi_c_gen.py ARGS ${DEST_DIR}/upf.api.json + OUTPUT ${DEST_DIR}/upf.api.vapi.hpp + COMMAND python3 ${VPP_HOME}/share/vpp/vapi_cpp_gen.py ARGS ${DEST_DIR}/upf.api.json ) include_directories(SYSTEM) include_directories(${CMAKE_CURRENT_BINARY_DIR}) -include_directories(${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf) +include_directories(${DEST_DIR}) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUPF_VPP_PLUGIN=1") add_library(upf_plugin SHARED @@ -192,26 +119,28 @@ add_library(upf_plugin SHARED ${UPF_VAPI_GENERATED_FILES}) target_link_libraries(upf_plugin ${HYPERSCAN_LIB}) -file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf) -file(COPY ${UPF_PLUGIN_HEADER_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf) -include_directories(${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins) +file(MAKE_DIRECTORY ${DEST_DIR}/upf) -# add_library(upf_api_test_plugin SHARED -# ${UPF_API_TEST_SOURCE_FILES} -# ${UPF_API_GENERATED_FILES}) +# Copy header files +foreach(FILE ${UPF_PLUGIN_HEADER_FILES}) + # Get the path of the file relative to the source directory + file(RELATIVE_PATH RELATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/upf" "${FILE}") + get_filename_component(DEST_PATH "${DEST_DIR}/upf/${RELATIVE_PATH}" DIRECTORY) + + # Make sure the destination directory exists + file(MAKE_DIRECTORY "${DEST_PATH}") + message (STATUS "Copying ${FILE} to ${DEST_DIR}/upf/${RELATIVE_PATH}") + + configure_file("${FILE}" "${DEST_DIR}/upf/${RELATIVE_PATH}" COPYONLY) +endforeach() set(VPP_INSTALL_PLUGIN ${UPF_INSTALL_PREFIX}/vpp_plugins) -# set(VPP_INSTALL_API_TEST_PLUGIN ${UPF_INSTALL_PREFIX}/vpp_api_test_plugins CACHE STRING "vpp_install_api_test_plugin") set_target_properties(upf_plugin PROPERTIES LINKER_LANGUAGE C INSTALL_RPATH ${VPP_INSTALL_PLUGIN} PREFIX "") -# set_target_properties(upf_api_test_plugin -# PROPERTIES -# LINKER_LANGUAGE C -# PREFIX "") install(DIRECTORY DESTINATION ${VPP_INSTALL_PLUGIN} @@ -220,14 +149,7 @@ install(TARGETS upf_plugin DESTINATION ${VPP_INSTALL_PLUGIN} COMPONENT ${UPF_PLUGIN}) -#install(DIRECTORY -# DESTINATION ${VPP_INSTALL_API_TEST_PLUGIN} -# COMPONENT ${UPF_PLUGIN}) -#install(TARGETS upf_api_test_plugin -# DESTINATION ${VPP_INSTALL_API_TEST_PLUGIN} -# COMPONENT ${UPF_PLUGIN}) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf/upf.api.json +install(FILES ${DEST_DIR}/upf.api.json DESTINATION ${CMAKE_INSTALL_PREFIX}/share/vpp/api/plugins COMPONENT ${UPF_PLUGIN}-dev) diff --git a/upf/upf_test.c b/upf/upf_test.c deleted file mode 100644 index 8053f5a..0000000 --- a/upf/upf_test.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * upf.c - 3GPP TS 29.244 GTP-U UP plug-in - * - * Copyright (c) 2017 Travelping GmbH - * - * 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. - */ -#include -#include -#include -#include -#include - -uword unformat_sw_if_index (unformat_input_t *input, va_list *args); - -typedef struct -{ - /* API message ID base */ - u16 msg_id_base; - vat_main_t *vat_main; -} upf_test_main_t; - -upf_test_main_t upf_test_main; - -#define __plugin_msg_base upf_test_main.msg_id_base -#include - -#include -#include -#include - -static int -api_upf_app_add_del (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_app_ip_rule_add_del (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_app_l7_rule_add_del (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_app_flow_timeout_set (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_update_app (vat_main_t *vam) -{ - return -1; -} - -#define vl_api_upf_application_l7_rule_details_t_handler vl_noop_handler -#define vl_api_upf_applications_details_t_handler vl_noop_handler -#define vl_api_upf_nat_pool_details_t_handler vl_noop_handler -#define vl_api_upf_policy_details_t_handler vl_noop_handler -#define vl_api_upf_nwi_details_t_handler vl_noop_handler -#define vl_api_upf_pfcp_endpoint_details_t_handler vl_noop_handler - -static int -api_upf_applications_dump (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_application_l7_rule_dump (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_pfcp_reencode (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_pfcp_format (vat_main_t *vam) -{ - return -1; -} - -static void -vl_api_upf_pfcp_reencode_reply_t_handler (vl_api_upf_pfcp_reencode_reply_t *mp) -{ - vat_main_t *vam = upf_test_main.vat_main; - - fformat (vam->ofp, "retval %d packet_len %u\n", mp->retval, mp->packet_len); -} - -static void -vl_api_upf_pfcp_format_reply_t_handler (vl_api_upf_pfcp_format_reply_t *mp) -{ - vat_main_t *vam = upf_test_main.vat_main; - - fformat (vam->ofp, "retval %d text_len %u\n", mp->retval, mp->text_len); -} - -static int -api_upf_nat_pool_dump (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_policy_dump (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_policy_add_del (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_nwi_dump (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_nwi_add_del (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_pfcp_endpoint_dump (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_pfcp_endpoint_add_del (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_pfcp_server_set (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_pfcp_policer_set (vat_main_t *vam) -{ - return -1; -} - -static int -api_upf_pfcp_heartbeats_set (vat_main_t *vam) -{ - return -1; -} - -#include From 016388a950df833f241094970b33b2b75ccea922 Mon Sep 17 00:00:00 2001 From: Marcin Zyla Date: Sat, 2 Mar 2024 00:01:25 +0100 Subject: [PATCH 2/3] fix --- CMakeLists.txt | 257 +++++++++++++++++++++++++++++++------------------ 1 file changed, 165 insertions(+), 92 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6291d76..5b66e7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,15 +3,14 @@ cmake_minimum_required(VERSION 3.13 FATAL_ERROR) set(CMAKE_C_COMPILER_NAMES - clang-13 - clang-12 - clang-11 - clang-10 - clang-9 - gcc-10 - gcc-9 - cc -) + clang-13 + clang-12 + clang-11 + clang-10 + clang-9 + gcc-10 + gcc-9 + cc) project(upf-plugin) @@ -20,32 +19,30 @@ set(CMAKE_VERBOSE_MAKEFILE ON) include(GNUInstallDirs) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" -) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") -set (CMAKE_CXX_STANDARD 11) -set (CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_C_STANDARD 11) # Check for memfd_create syscall include(CheckSymbolExists) -CHECK_SYMBOL_EXISTS ( "__NR_memfd_create" "sys/syscall.h" HAVE_MEMFD_CREATE ) -if ( HAVE_MEMFD_CREATE ) - add_definitions ( -DHAVE_MEMFD_CREATE ) +check_symbol_exists("__NR_memfd_create" "sys/syscall.h" HAVE_MEMFD_CREATE) +if(HAVE_MEMFD_CREATE) + add_definitions(-DHAVE_MEMFD_CREATE) endif() if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) - set(UPF_PLUGIN upf-plugin) + set(UPF_PLUGIN upf-plugin) endif() -include (Packager) +include(Packager) # Dependencies message(STATUS "Looking for Hyperscan") find_path(HYPERSCAN_INCLUDE_DIR NAMES hs/hs.h) find_library(HYPERSCAN_LIB1 NAMES hs) find_library(HYPERSCAN_LIB2 NAMES hs_runtime) -set (HYPERSCAN_LIB ${HYPERSCAN_LIB1} ${HYPERSCAN_LIB2}) +set(HYPERSCAN_LIB ${HYPERSCAN_LIB1} ${HYPERSCAN_LIB2}) if(HYPERSCAN_INCLUDE_DIR AND HYPERSCAN_LIB) include_directories(${HYPERSCAN_INCLUDE_DIR}) message(STATUS "Found Hyperscan in ${HYPERSCAN_INCLUDE_DIR}") @@ -60,52 +57,121 @@ include_directories(${VPP_INCLUDE_DIR}) # sources set(DEST_DIR "${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins/upf") -file (GLOB_RECURSE UPF_PLUGIN_SOURCES "upf/*.c") -file(GLOB_RECURSE UPF_PLUGIN_HEADER_FILES "upf/*.h" "upf/*.def") +set(UPF_PLUGIN_SOURCES + upf/upf.c + upf/upf_api.c + upf/upf_cli.c + upf/upf_gtpu_encap.c + upf/upf_gtpu_decap.c + upf/upf_flow_node.c + upf/upf_classify.c + upf/upf_adf.c + upf/upf_input.c + upf/upf_forward.c + upf/upf_session_dpo.c + upf/pfcp.c + upf/upf_pfcp.c + upf/upf_pfcp_api.c + upf/upf_pfcp_server.c + upf/upf_pfcp_session_server.c + upf/upf_proxy_accept.c + upf/upf_proxy_input.c + upf/upf_proxy_output.c + upf/upf_tcp_forward.c + upf/upf_proxy.c + upf/upf_app_db.c + upf/upf_ipfilter.c + upf/upf_app_dpo.c + upf/upf_ipfix.c + upf/upf_ipfix_templates.c + upf/flowtable_init.c + upf/flowtable.c + upf/unittest.c + upf/upf_gtpu_encap.c + upf/upf_gtpu_decap.c + upf/upf_flow_node.c + upf/upf_classify.c + upf/upf_proxy_accept.c + upf/upf_proxy_input.c + upf/upf_proxy_output.c + upf/upf_tcp_forward.c + upf/upf_input.c + upf/upf_forward.c + upf/upf_session_dpo.c) + +set(UPF_PLUGIN_HEADER_FILES + upf/upf.h + upf/pfcp.h + upf/upf_pfcp.h + upf/upf_pfcp_api.h + upf/upf_pfcp_server.h + upf/upf_proxy.h + upf/upf_app_db.h + upf/upf_ipfilter.h + upf/upf_app_dpo.h + upf/upf_app_db.h + upf/flowtable.h + upf/flowtable_tcp.h + upf/upf_buffer_opaque.h + upf/upf_ipfix.h + upf/upf_ipfix_templates.h + upf/upf_gtpu_error.def + upf/version.h + upf/llist.h + upf/qwe/qwe.h + ) -set(UPF_API_GENERATED_FILES - ${DEST_DIR}/upf.api.h - ${DEST_DIR}/upf.api_types.h - ${DEST_DIR}/upf.api_enum.h -) +set(UPF_API_GENERATED_FILES ${DEST_DIR}/upf.api.h ${DEST_DIR}/upf.api_types.h + ${DEST_DIR}/upf.api_enum.h) -set(UPF_VAPI_GENERATED_FILES - ${DEST_DIR}/upf.api.vapi.h - ${DEST_DIR}/upf.api.vapi.hpp -) +set(UPF_VAPI_GENERATED_FILES ${DEST_DIR}/upf.api.vapi.h + ${DEST_DIR}/upf.api.vapi.hpp) -if (NOT VPP_HOME) - set(VPP_HOME /usr) +if(NOT VPP_HOME) + set(VPP_HOME /usr) endif() -if (NOT CMAKE_BUILD_TYPE) - set (CMAKE_BUILD_TYPE "Release") -endif (NOT CMAKE_BUILD_TYPE) - -SET(UPF_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} CACHE STRING "upf_install_prefix") - -if (CMAKE_BUILD_TYPE STREQUAL "Release") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -Wno-address-of-packed-member -march=corei7 -mtune=corei7-avx -O3 -g") -elseif (CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wno-address-of-packed-member -march=corei7 -mtune=corei7-avx -O0 -g") - add_definitions(-DCLIB_DEBUG -DVLIB_BUFFER_TRACE_TRAJECTORY -fPIC -fstack-protector-all) +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release") +endif(NOT CMAKE_BUILD_TYPE) + +set(UPF_INSTALL_PREFIX + ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} + CACHE STRING "upf_install_prefix") + +if(CMAKE_BUILD_TYPE STREQUAL "Release") + set(CMAKE_C_FLAGS_RELEASE + "${CMAKE_C_FLAGS_RELEASE} -Wall -Wno-address-of-packed-member -march=corei7 -mtune=corei7-avx -O3 -g" + ) +elseif(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_C_FLAGS_DEBUG + "${CMAKE_C_FLAGS_DEBUG} -Wall -Wno-address-of-packed-member -march=corei7 -mtune=corei7-avx -O0 -g" + ) + add_definitions(-DCLIB_DEBUG -DVLIB_BUFFER_TRACE_TRAJECTORY -fPIC + -fstack-protector-all) endif() -execute_process( - COMMAND mkdir -p ${DEST_DIR} - ) +execute_process(COMMAND mkdir -p ${DEST_DIR}) add_custom_command( - OUTPUT ${DEST_DIR}/upf.api.h ${DEST_DIR}/upf.api_types.h ${DEST_DIR}/upf.api_enum.h - COMMAND ${VPP_HOME}/bin/vppapigen ARGS --includedir ${VPP_HOME}/include --input ${CMAKE_CURRENT_SOURCE_DIR}/upf/upf.api --output ${DEST_DIR}/upf.api.h --outputdir ${DEST_DIR}/ - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/upf/upf.api - OUTPUT ${DEST_DIR}/upf.api.json - COMMAND ${VPP_HOME}/bin/vppapigen ARGS JSON --includedir ${VPP_HOME}/include --input ${CMAKE_CURRENT_SOURCE_DIR}/upf/upf.api --output ${DEST_DIR}/upf.api.json --outputdir ${CMAKE_CURRENT_BINARY_DIR}/vapi/ - OUTPUT ${DEST_DIR}/upf.api.vapi.h - COMMAND python3 ${VPP_HOME}/share/vpp/vapi_c_gen.py ARGS ${DEST_DIR}/upf.api.json - OUTPUT ${DEST_DIR}/upf.api.vapi.hpp - COMMAND python3 ${VPP_HOME}/share/vpp/vapi_cpp_gen.py ARGS ${DEST_DIR}/upf.api.json - ) + OUTPUT ${DEST_DIR}/upf.api.h ${DEST_DIR}/upf.api_types.h + ${DEST_DIR}/upf.api_enum.h + COMMAND + ${VPP_HOME}/bin/vppapigen ARGS --includedir ${VPP_HOME}/include --input + ${CMAKE_CURRENT_SOURCE_DIR}/upf/upf.api --output ${DEST_DIR}/upf.api.h + --outputdir ${DEST_DIR}/ + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/upf/upf.api + OUTPUT ${DEST_DIR}/upf.api.json + COMMAND + ${VPP_HOME}/bin/vppapigen ARGS JSON --includedir ${VPP_HOME}/include --input + ${CMAKE_CURRENT_SOURCE_DIR}/upf/upf.api --output ${DEST_DIR}/upf.api.json + --outputdir ${CMAKE_CURRENT_BINARY_DIR}/vapi/ + OUTPUT ${DEST_DIR}/upf.api.vapi.h + COMMAND python3 ${VPP_HOME}/share/vpp/vapi_c_gen.py ARGS + ${DEST_DIR}/upf.api.json + OUTPUT ${DEST_DIR}/upf.api.vapi.hpp + COMMAND python3 ${VPP_HOME}/share/vpp/vapi_cpp_gen.py ARGS + ${DEST_DIR}/upf.api.json) include_directories(SYSTEM) include_directories(${CMAKE_CURRENT_BINARY_DIR}) @@ -113,52 +179,59 @@ include_directories(${DEST_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUPF_VPP_PLUGIN=1") -add_library(upf_plugin SHARED - ${UPF_PLUGIN_SOURCES} - ${UPF_API_GENERATED_FILES} - ${UPF_VAPI_GENERATED_FILES}) +add_library(upf_plugin SHARED ${UPF_PLUGIN_SOURCES} ${UPF_API_GENERATED_FILES} + ${UPF_VAPI_GENERATED_FILES}) target_link_libraries(upf_plugin ${HYPERSCAN_LIB}) file(MAKE_DIRECTORY ${DEST_DIR}/upf) # Copy header files foreach(FILE ${UPF_PLUGIN_HEADER_FILES}) - # Get the path of the file relative to the source directory - file(RELATIVE_PATH RELATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/upf" "${FILE}") - get_filename_component(DEST_PATH "${DEST_DIR}/upf/${RELATIVE_PATH}" DIRECTORY) + # Get the path of the file relative to the source directory + # file(RELATIVE_PATH RELATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/upf" "${FILE}") + get_filename_component(DIR "${FILE}" DIRECTORY) + message(STATUS "DIR: ${DIR}") - # Make sure the destination directory exists - file(MAKE_DIRECTORY "${DEST_PATH}") - message (STATUS "Copying ${FILE} to ${DEST_DIR}/upf/${RELATIVE_PATH}") + # Make sure the destination directory exists + file(MAKE_DIRECTORY "${DEST_DIR}/${DIR}") + message(STATUS "Copying ${FILE} to ${DEST_DIR}/${DIR}") - configure_file("${FILE}" "${DEST_DIR}/upf/${RELATIVE_PATH}" COPYONLY) + configure_file("${FILE}" "${DEST_DIR}/${DIR}" COPYONLY) + message(STATUS "configure file ${FILE} ${DEST_DIR}/${DIR}") endforeach() set(VPP_INSTALL_PLUGIN ${UPF_INSTALL_PREFIX}/vpp_plugins) -set_target_properties(upf_plugin - PROPERTIES - LINKER_LANGUAGE C - INSTALL_RPATH ${VPP_INSTALL_PLUGIN} - PREFIX "") - -install(DIRECTORY - DESTINATION ${VPP_INSTALL_PLUGIN} - COMPONENT ${UPF_PLUGIN}) -install(TARGETS upf_plugin - DESTINATION ${VPP_INSTALL_PLUGIN} - COMPONENT ${UPF_PLUGIN}) - -install(FILES ${DEST_DIR}/upf.api.json - DESTINATION ${CMAKE_INSTALL_PREFIX}/share/vpp/api/plugins - COMPONENT ${UPF_PLUGIN}-dev) - -install(FILES ${UPF_API_HEADER_FILES} ${UPF_API_GENERATED_FILES} - DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/vpp_plugins/upf - COMPONENT ${UPF_PLUGIN}-dev) - -install(FILES ${UPF_VAPI_GENERATED_FILES} - DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/vapi - COMPONENT ${UPF_PLUGIN}-dev) +set_target_properties( + upf_plugin + PROPERTIES LINKER_LANGUAGE C + INSTALL_RPATH ${VPP_INSTALL_PLUGIN} + PREFIX "") + +install( + DIRECTORY + DESTINATION ${VPP_INSTALL_PLUGIN} + COMPONENT ${UPF_PLUGIN}) + +install( + TARGETS upf_plugin + DESTINATION ${VPP_INSTALL_PLUGIN} + COMPONENT ${UPF_PLUGIN}) + +install( + FILES ${DEST_DIR}/upf.api.json + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/vpp/api/plugins + COMPONENT ${UPF_PLUGIN}-dev) + +install( + FILES ${UPF_API_HEADER_FILES} ${UPF_API_GENERATED_FILES} + DESTINATION + ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/vpp_plugins/upf + COMPONENT ${UPF_PLUGIN}-dev) + +install( + FILES ${UPF_VAPI_GENERATED_FILES} + DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/vapi + COMPONENT ${UPF_PLUGIN}-dev) make_packages() From 565b1d3076769c401e6c4edcc677ce6d8797be4a Mon Sep 17 00:00:00 2001 From: Marcin Zyla Date: Sat, 2 Mar 2024 00:03:38 +0100 Subject: [PATCH 3/3] fix --- CMakeLists.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b66e7e..ffea59b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -117,9 +117,7 @@ set(UPF_PLUGIN_HEADER_FILES upf/upf_ipfix_templates.h upf/upf_gtpu_error.def upf/version.h - upf/llist.h - upf/qwe/qwe.h - ) + upf/llist.h) set(UPF_API_GENERATED_FILES ${DEST_DIR}/upf.api.h ${DEST_DIR}/upf.api_types.h ${DEST_DIR}/upf.api_enum.h)