X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fcmake%2Fapi.cmake;h=0e273a7d4dc3b4284401c5e25d0f71c6cd7cecfa;hb=ac0babd412e3b5282136a5c5c5be2c4cc4be6895;hp=fe2cad6bc463cf99dd51e5a5aabc8db796811ac4;hpb=53f06a0148cd7ece2d48a3396e3e63f248d066e9;p=vpp.git diff --git a/src/cmake/api.cmake b/src/cmake/api.cmake index fe2cad6bc46..0e273a7d4dc 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,8 +63,8 @@ function(vpp_generate_api_json_header file dir component) endif() add_custom_command (OUTPUT ${output_name} COMMAND mkdir -p ${output_dir} - COMMAND ${VPP_APIGEN} - ARGS ${includedir} --includedir ${CMAKE_SOURCE_DIR} --input ${CMAKE_CURRENT_SOURCE_DIR}/${file} JSON --output ${output_name} + COMMAND ${PYENV} ${VPP_APIGEN} + ARGS ${includedir} --includedir ${CMAKE_SOURCE_DIR} --input ${CMAKE_CURRENT_SOURCE_DIR}/${file} JSON --outputdir ${output_dir} --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,12 +161,15 @@ 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