diff --git a/compile_proto.cmake b/compile_proto.cmake index 2a35563e6..77eeb67a6 100644 --- a/compile_proto.cmake +++ b/compile_proto.cmake @@ -20,6 +20,7 @@ function (compile_proto) ) set(NANOPB_GENERATOR ${CMAKE_SOURCE_DIR}/lib/nanopb/generator/nanopb_generator.py) + set(PYTHON_GENERATOR ${CMAKE_SOURCE_DIR}/lib/nanopb/generator/protoc) set(PROTO_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/proto) set(PROTO_OUTPUT_DIR ${PROTO_OUTPUT_DIR} PARENT_SCOPE) @@ -42,4 +43,27 @@ function (compile_proto) OUTPUT ${PROTO_OUTPUT_DIR}/config.pb.c ${PROTO_OUTPUT_DIR}/config.pb.h ${PROTO_OUTPUT_DIR}/enums.pb.c ${PROTO_OUTPUT_DIR}/enums.pb.h COMMENT "Compiling enums.proto and config.proto" ) + + add_custom_command( + DEPENDS ${VENV_FILE} ${PYTHON_GENERATOR} ${CMAKE_SOURCE_DIR}/proto/enums.proto ${CMAKE_SOURCE_DIR}/proto/config.proto ${CMAKE_SOURCE_DIR}/lib/nanopb/generator/proto/nanopb.proto + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMAND ${CMAKE_COMMAND} -E make_directory ${PROTO_OUTPUT_DIR} + COMMAND ${VENV_BIN_DIR}/python ${PYTHON_GENERATOR} + --python_out ${PROTO_OUTPUT_DIR} + -I ${CMAKE_SOURCE_DIR}/proto + -I ${CMAKE_SOURCE_DIR}/lib/nanopb/generator/proto + ${CMAKE_SOURCE_DIR}/proto/enums.proto + COMMAND ${VENV_BIN_DIR}/python ${PYTHON_GENERATOR} + --python_out ${PROTO_OUTPUT_DIR} + -I ${CMAKE_SOURCE_DIR}/proto + -I ${CMAKE_SOURCE_DIR}/lib/nanopb/generator/proto + ${CMAKE_SOURCE_DIR}/proto/config.proto + COMMAND ${VENV_BIN_DIR}/python ${PYTHON_GENERATOR} + --python_out ${PROTO_OUTPUT_DIR} + -I ${CMAKE_SOURCE_DIR}/proto + -I ${CMAKE_SOURCE_DIR}/lib/nanopb/generator/proto + ${CMAKE_SOURCE_DIR}/lib/nanopb/generator/proto/nanopb.proto + OUTPUT ${PROTO_OUTPUT_DIR}/config_pb2.py ${PROTO_OUTPUT_DIR}/enums_pb2.py ${PROTO_OUTPUT_DIR}/nanopb_pb2.py + COMMENT "Compiling config_pb2.py, enums_pb2.py, and nanopb_pb2.py Python modules" + ) endfunction() diff --git a/patch_board_config.cmake b/patch_board_config.cmake index 463085598..50a547ceb 100644 --- a/patch_board_config.cmake +++ b/patch_board_config.cmake @@ -12,7 +12,7 @@ function (patch_board_config) add_custom_target( PatchBoardConfig ALL - DEPENDS ${PROJECT_NAME} + DEPENDS ${PROJECT_NAME} ${PROTO_OUTPUT_DIR}/config_pb2.py ${PROTO_OUTPUT_DIR}/enums_pb2.py ${PROTO_OUTPUT_DIR}/nanopb_pb2.py WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} # something in the protobuf compiler doesn't like the multiple paths, # so we'll copy all the .proto files into one location