JSON_DUMP := # Older versions of GNUmake do not support actual writing to file, so we sort of do what we can # and write out text in chunks, escaping " write-to-file = \ $(eval _args:=) \ $(foreach obj,$3,$(eval _args+=$(obj))$(if $(word $2,$(_args)),@printf "%s" $(subst ",\",$(_args)) >> $1 $(EOL)$(eval _args:=))) \ $(if $(_args),@printf "%s" $(subst ",\", $(_args)) >> $1) \ define EOL endef # Functions to dump build information into a JSON tree. # This creates a [ "", "elem1", "elem2" ] dump-json-list = \ $(eval JSON_DUMP += [ "" ) \ $(if $(1),\ $(foreach _list_item,$(strip $1),$(eval JSON_DUMP += , "$(subst ",\",$(_list_item))")) \ ) \ $(eval JSON_DUMP += ] )\ # This creates , "name" : ["", "e1", "e2" ] dump-property-list = \ $(eval JSON_DUMP += , "$(1)" : ) \ $(call dump-json-list, $($(2)))\ # Dumps the module dump-json-module = \ $(eval JSON_DUMP += , { "module" : "$(_emugl_MODULE) ")\ $(eval JSON_DUMP += , "path" : "$(LOCAL_PATH) ")\ $(eval JSON_DUMP += , "type" : "$(_emugl.$(_emugl_MODULE).type)")\ $(call dump-property-list,includes,LOCAL_C_INCLUDES) \ $(call dump-property-list,cflags,LOCAL_CFLAGS) \ $(call dump-property-list,libs,LOCAL_SHARED_LIBRARIES) \ $(call dump-property-list,staticlibs,LOCAL_STATIC_LIBRARIES) \ $(call dump-property-list,src,LOCAL_SRC_FILES) \ $(eval JSON_DUMP += } )\