Commit ed88f7de authored by Stewart Miles's avatar Stewart Miles

Improved build rule generation for Android flatbuffer headers.

* Added the ability to create a build target for generated headers.
* Made it possible for generated header targets to depend upon each
  other or arbitrary build targets.

Tested:
Verified some pretty complex libraries with numerous flatbuffer schema
dependencies build using this macro on Linux with the NDK.
Bug: 25188384

Change-Id: I846855a50808e58c34cdf7086e93e7ea0df69e0d
parent 07478a67
...@@ -158,13 +158,24 @@ define flatbuffers_header_build_rule ...@@ -158,13 +158,24 @@ define flatbuffers_header_build_rule
$(eval \ $(eval \
$(call flatbuffers_fbs_to_h,$(2),$(3),$(1)): $(1) $(flatc_target) $(call flatbuffers_fbs_to_h,$(2),$(3),$(1)): $(1) $(flatc_target)
$(call host-echo-build-step,generic,Generate) \ $(call host-echo-build-step,generic,Generate) \
$(subst $(LOCAL_PATH)/,,$(call flatbuffers_fbs_to_h,$(2),$(3),$(1))) $(subst $(LOCAL_PATH)/,,$(call flatbuffers_fbs_to_h,$(2),$(3),$(1)))
$(hide) $$(FLATBUFFERS_FLATC) $(FLATBUFFERS_FLATC_ARGS) \ $(hide) $$(FLATBUFFERS_FLATC) $(FLATBUFFERS_FLATC_ARGS) \
$(foreach include,$(4),-I $(include)) -o $$(dir $$@) -c $$<) $(foreach include,$(4),-I $(include)) -o $$(dir $$@) -c $$<)
endef endef
# $(flatbuffers_header_build_rules schema_files,schema_dir,output_dir,\ # $(flatbuffers_header_build_rules schema_files,schema_dir,output_dir,\
# schema_include_dirs,src_files)) # schema_include_dirs,src_files,[build_target],[dependencies]))
#
# $(1) schema_files: Space separated list of flatbuffer schema files.
# $(2) schema_dir: Directory containing the flatbuffer schemas.
# $(3) output_dir: Where to place the generated files.
# $(4) schema_include_dirs: Directories to include when generating schemas.
# $(5) src_files: Files that should depend upon the headers generated from the
# flatbuffer schemas.
# $(6) build_target: Name of a build target that depends upon all generated
# headers.
# $(7) dependencies: Space seperated list of additional build targets src_files
# should depend upon.
# #
# Use this in your own Android.mk file to generate build rules that will # Use this in your own Android.mk file to generate build rules that will
# generate header files for your flatbuffer schemas as well as automatically # generate header files for your flatbuffer schemas as well as automatically
...@@ -176,11 +187,21 @@ endef ...@@ -176,11 +187,21 @@ endef
define flatbuffers_header_build_rules define flatbuffers_header_build_rules
$(foreach schema,$(1),\ $(foreach schema,$(1),\
$(call flatbuffers_header_build_rule,\ $(call flatbuffers_header_build_rule,\
$(schema),$(strip $(2)),$(strip $(3)),$(strip $(4))))\ $(schema),$(strip $(2)),$(strip $(3)),$(strip $(4))))\
$(foreach src,$(strip $(5)),\ $(foreach src,$(strip $(5)),\
$(eval $(PORTABLE_LOCAL_PATH)$$(src): \ $(eval $(PORTABLE_LOCAL_PATH)$$(src): \
$(foreach schema,$(strip $(1)),\ $(foreach schema,$(strip $(1)),\
$(call flatbuffers_fbs_to_h,$(strip $(2)),$(strip $(3)),$(schema))))) $(call flatbuffers_fbs_to_h,$(strip $(2)),$(strip $(3)),$(schema)))))\
$(if $(6),\
$(foreach schema,$(strip $(1)),\
$(eval $(6): \
$(call flatbuffers_fbs_to_h,$(strip $(2)),$(strip $(3)),$(schema)))),)\
$(if $(7),\
$(foreach src,$(strip $(5)),\
$(eval $(PORTABLE_LOCAL_PATH)$$(src): $(strip $(7)))),)\
$(if $(7),\
$(foreach dependency,$(strip $(7)),\
$(eval $(6): $(dependency))),)
endef endef
endif # FLATBUFFERS_INCLUDE_MK_ endif # FLATBUFFERS_INCLUDE_MK_
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment