X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fcmake%2Fapi.cmake;h=415eb5e8c0c5b4450b8e2118f6435ca601695bcf;hb=0fa900e482451d05449501c1422bfa7c47eec661;hp=644e80b8270075791a17b0a9f1d3e95ce4edc8ae;hpb=d16004d56c22635a0e21b177933dc39b65a3642a;p=vpp.git diff --git a/src/cmake/api.cmake b/src/cmake/api.cmake index 644e80b8270..415eb5e8c0c 100644 --- a/src/cmake/api.cmake +++ b/src/cmake/api.cmake @@ -17,26 +17,36 @@ function(vpp_generate_api_c_header file) set (output_name ${CMAKE_CURRENT_BINARY_DIR}/${file}.h) get_filename_component(output_dir ${output_name} DIRECTORY) + if(NOT VPP_APIGEN) + set(VPP_APIGEN ${CMAKE_SOURCE_DIR}/tools/vppapigen/vppapigen) + endif() add_custom_command (OUTPUT ${output_name} COMMAND mkdir -p ${output_dir} - COMMAND ${CMAKE_SOURCE_DIR}/tools/vppapigen/vppapigen + COMMAND ${VPP_APIGEN} ARGS --includedir ${CMAKE_SOURCE_DIR} --input ${CMAKE_CURRENT_SOURCE_DIR}/${file} --output ${output_name} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${file} COMMENT "Generating API header ${output_name}" ) endfunction() -function(vpp_generate_api_json_header file dir) +function(vpp_generate_api_json_header file dir component) set (output_name ${CMAKE_CURRENT_BINARY_DIR}/${file}.json) get_filename_component(output_dir ${output_name} DIRECTORY) + if(NOT VPP_APIGEN) + set(VPP_APIGEN ${CMAKE_SOURCE_DIR}/tools/vppapigen/vppapigen) + endif() add_custom_command (OUTPUT ${output_name} COMMAND mkdir -p ${output_dir} - COMMAND ${CMAKE_SOURCE_DIR}/tools/vppapigen/vppapigen + COMMAND ${VPP_APIGEN} ARGS --includedir ${CMAKE_SOURCE_DIR} --input ${CMAKE_CURRENT_SOURCE_DIR}/${file} JSON --output ${output_name} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${file} COMMENT "Generating API header ${output_name}" ) - install(FILES ${output_name} DESTINATION share/vpp/api/${dir}/) + install( + FILES ${output_name} + DESTINATION share/vpp/api/${dir}/ + COMPONENT ${component} + ) endfunction() ############################################################################## @@ -45,16 +55,19 @@ endfunction() # @param dir - the install directory under ROOT/share/vpp/api to place the # generated .json file ############################################################################## -function(vpp_generate_api_header file dir) +function(vpp_generate_api_header file dir component) vpp_generate_api_c_header (${file}) - vpp_generate_api_json_header (${file} ${dir}) + vpp_generate_api_json_header (${file} ${dir} ${component}) endfunction() -function(vpp_add_api_files target) +function(vpp_add_api_files name) unset(header_files) + set(target ${name}_api_headers) + file(RELATIVE_PATH rpath ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) foreach(file ${ARGN}) - vpp_generate_api_header (${file} core) - list (APPEND header_files ${file}.h ${file}.json) + vpp_generate_api_header (${file} core vpp) + list(APPEND header_files ${file}.h ${file}.json) + set_property(GLOBAL APPEND PROPERTY VPP_API_FILES ${rpath}/${file}) endforeach() add_custom_target(${target} DEPENDS ${header_files}) endfunction()