automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: python_PYTHON not triggering rules for generated code


From: Stefano Lattarini
Subject: Re: python_PYTHON not triggering rules for generated code
Date: Tue, 27 Mar 2012 12:53:55 +0200

On 03/26/2012 04:02 PM, cb132 wrote:
> 
> I am using Google protobuf to generate C++ and/or python code, and compiling
> the python using python_PYTHON - but it's not working.
> 
> Makefile.am looks like this;
> 
> <code>
> if GEN_PROTOC_CPP
>   include $(srcdir)/Makefile-cpp.am
> endif
> if GEN_PROTOC_PY
>   include $(srcdir)/Makefile-py.am
> endif
> </code>
> 
> Makefile-py.am looks like this;
> 
> <code>
> ## list of .proto files
> include $(srcdir)/Protos.am
> 
> ## proto compiler support
> include $(top_srcdir)/.am/protoc.am
> 
> ##  compile python
> python_PYTHON = \
>     __init__.py \
>     $(PROTO_PYS) 
> </code>
> 
> Protos.am provides a list of protos, and rules;
> 
> <code>
> PROTO_PYS=$(PROTOS:.proto=_pb2.py)
> 
> MsgHeaderProto_pb2.py : MsgHeaderProto.proto
>       @echo '  PROTOP MsgHeaderProto.proto'
>       protoc --python_out=.. -$I(topsrcdir)  $(PROTOC_PYFLAGS) $<
> </code>
>
This seems all good and correct, but for one thing: I don't see the '$(PROTOS)'
variable defined anywhere.  If it actually isn't defined, '$(PROTO_PYS)' will
end up being empty, so no surprise no '.py' files gets generated.  On the other
hand, if $(PROTOS) is correctly defined, the problem might be more subtle, or
you might even have found an automake bug.

> Problem one is the .py rules are never triggered to generate the .py files.  
> The C++ makefile is very similar, and works fine.
>
> I have tried using BUILT_SOURCES, but it does not work if I use
> 
> <code>BUILT_SOURCES = $(PROTO_PYS) </code>
> 
> and it does not work unless it's in Makefile.am.  Since python_PYTHON
> doesn't seem to actually compile until I do a 'make install', I've also
> tried
> 
> <code>all-local : $(PROTO_PYS) <code>
>
If you add a rule like this:

  debug:
          @echo PROTOS: $(PROTOS)
          @echo PROTO_PYS: $(PROTO_PYS)

then what does "make debug" print?

Regards,
  Stefano



reply via email to

[Prev in Thread] Current Thread [Next in Thread]