aboutsummaryrefslogtreecommitdiff
path: root/json-dump.mk
blob: 2e20cdff95f040ad5fcf713bce96a7ceb0ff8793 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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 += } )\