X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fcmake%2Fapi.cmake;h=831c2b1e32d929d2d7d3ef75a34c58f34bca9fd5;hb=855ad3373ee9257ce7c917b90c638bd2f8a76da4;hp=c936f731632dc0b6923b10324477ce2492669956;hpb=dc20371f83ed81462c0b24eb750b76f7819df64a;p=vpp.git diff --git a/src/cmake/api.cmake b/src/cmake/api.cmake index c936f731632..831c2b1e32d 100644 --- a/src/cmake/api.cmake +++ b/src/cmake/api.cmake @@ -23,13 +23,33 @@ function(vpp_generate_api_c_header file) if (VPP_INCLUDE_DIR) set(includedir "--includedir" ${VPP_INCLUDE_DIR}) endif() - add_custom_command (OUTPUT ${output_name} + + set(OUTPUT_HEADERS + "${CMAKE_CURRENT_BINARY_DIR}/${file}.h" + "${CMAKE_CURRENT_BINARY_DIR}/${file}_fromjson.h" + "${CMAKE_CURRENT_BINARY_DIR}/${file}_tojson.h" + "${CMAKE_CURRENT_BINARY_DIR}/${file}_enum.h" + "${CMAKE_CURRENT_BINARY_DIR}/${file}_types.h" + "${CMAKE_CURRENT_BINARY_DIR}/${file}.c" + "${CMAKE_CURRENT_BINARY_DIR}/${file}_test.c" + "${CMAKE_CURRENT_BINARY_DIR}/${file}_test2.c" + ) + + add_custom_command ( + OUTPUT ${OUTPUT_HEADERS} COMMAND mkdir -p ${output_dir} - COMMAND ${VPP_APIGEN} + COMMAND ${PYENV} ${VPP_APIGEN} ARGS ${includedir} --includedir ${CMAKE_SOURCE_DIR} --input ${CMAKE_CURRENT_SOURCE_DIR}/${file} --outputdir ${output_dir} --output ${output_name} DEPENDS ${VPP_APIGEN} ${CMAKE_CURRENT_SOURCE_DIR}/${file} COMMENT "Generating API header ${output_name}" ) + get_filename_component(barename ${file} NAME) + set(t ${barename}_deps) + if (NOT TARGET ${t}) + add_custom_target(${t} ALL DEPENDS ${OUTPUT_HEADERS}) + add_dependencies(api_headers ${t}) + endif() + endfunction() function(vpp_generate_api_json_header file dir component) @@ -43,7 +63,7 @@ function(vpp_generate_api_json_header file dir component) endif() add_custom_command (OUTPUT ${output_name} COMMAND mkdir -p ${output_dir} - COMMAND ${VPP_APIGEN} + COMMAND ${PYENV} ${VPP_APIGEN} ARGS ${includedir} --includedir ${CMAKE_SOURCE_DIR} --input ${CMAKE_CURRENT_SOURCE_DIR}/${file} JSON --output ${output_name} DEPENDS ${VPP_APIGEN} ${CMAKE_CURRENT_SOURCE_DIR}/${file} COMMENT "Generating API header ${output_name}" @@ -60,7 +80,7 @@ endfunction() ############################################################################## function(vpp_generate_vapi_c_header f) get_filename_component(output ${f}.vapi.h NAME) - set (output_name ${CMAKE_BINARY_DIR}/vpp-api/vapi/${output}) + set (output_name ${VPP_BINARY_DIR}/vpp-api/vapi/${output}) if(NOT VPP_VAPI_C_GEN) set(VPP_VAPI_C_GEN ${CMAKE_SOURCE_DIR}/vpp-api/vapi/vapi_c_gen.py) set(VPP_VAPI_C_GEN_DEPENDS @@ -73,8 +93,8 @@ function(vpp_generate_vapi_c_header f) set(input ${CMAKE_CURRENT_BINARY_DIR}/${f}.json) add_custom_command( OUTPUT ${output_name} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/vpp-api/vapi - COMMAND ${VPP_VAPI_C_GEN} + WORKING_DIRECTORY ${VPP_BINARY_DIR}/vpp-api/vapi + COMMAND ${PYENV} ${VPP_VAPI_C_GEN} ARGS --remove-path ${input} DEPENDS ${input} ${VPP_VAPI_C_GEN_DEPENDS} COMMENT "Generating VAPI C header ${output_name}" @@ -88,7 +108,7 @@ endfunction () function (vpp_generate_vapi_cpp_header f) get_filename_component(output ${f}.vapi.hpp NAME) - set (output_name ${CMAKE_BINARY_DIR}/vpp-api/vapi/${output}) + set (output_name ${VPP_BINARY_DIR}/vpp-api/vapi/${output}) if(NOT VPP_VAPI_CPP_GEN) set(VPP_VAPI_CPP_GEN ${CMAKE_SOURCE_DIR}/vpp-api/vapi/vapi_cpp_gen.py) set(VPP_VAPI_CPP_GEN_DEPENDS @@ -100,8 +120,8 @@ function (vpp_generate_vapi_cpp_header f) set(input ${CMAKE_CURRENT_BINARY_DIR}/${f}.json) add_custom_command( OUTPUT ${output_name} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/vpp-api/vapi - COMMAND ${VPP_VAPI_CPP_GEN} + WORKING_DIRECTORY ${VPP_BINARY_DIR}/vpp-api/vapi + COMMAND ${PYENV} ${VPP_VAPI_CPP_GEN} ARGS --gen-h-prefix=vapi --remove-path ${input} DEPENDS ${input} ${VPP_VAPI_CPP_GEN_DEPENDS} COMMENT "Generating VAPI C++ header ${output_name}" @@ -141,15 +161,17 @@ function(vpp_add_api_files name dir component) get_filename_component(name ${file} NAME) list(APPEND header_files ${file}.h + ${file}_enum.h + ${file}_types.h ${file}.json - ${CMAKE_BINARY_DIR}/vpp-api/vapi/${name}.vapi.h - ${CMAKE_BINARY_DIR}/vpp-api/vapi/${name}.vapi.hpp + ${VPP_BINARY_DIR}/vpp-api/vapi/${name}.vapi.h + ${VPP_BINARY_DIR}/vpp-api/vapi/${name}.vapi.hpp ) endforeach() add_custom_target(${target} DEPENDS ${header_files}) + add_dependencies(api_headers ${target}) endfunction() add_custom_target(api_headers - DEPENDS vlibmemory_api_headers vnet_api_headers vpp_api_headers + DEPENDS vlibmemory_api_headers vnet_api_headers vpp_api_headers vlib_api_headers ) -