device: renew dhcp leases on awake for software devices
[NetworkManager.git] / Makefile.glib
1 # -*- Mode: makefile -*-
2 #
3 # Work-in-progress...
4 # See https://bugzilla.gnome.org/show_bug.cgi?id=654395
5
6 _GLIB_CLEANFILES =
7 _GLIB_DISTCLEANFILES =
8
9 _GLIB_V_GEN = $(_glib_v_gen_$(V))
10 _glib_v_gen_ = $(_glib_v_gen_$(AM_DEFAULT_VERBOSITY))
11 _glib_v_gen_0 = @echo "  GEN     " $(subst .stamp,,$@);
12
13
14 ### glib-genmarshal
15
16 _GLIB_MARSHAL_GENERATED = $(subst .h,,$(filter %marshal.h,$(GLIB_GENERATED)))
17
18 _glib_marshal_prefix = $(subst marshal,,$(subst _marshal,,$(subst -,_,$(notdir $(1)))))_marshal
19 _glib_marshal_sources_var = $(subst -,_,$(notdir $(1)))_sources
20 _glib_marshal_sources = $(filter-out %.h,$(filter-out $(GLIB_GENERATED),$($(_glib_marshal_sources_var))))
21
22 define _glib_make_genmarshal_rules
23 $(if $(_glib_marshal_sources),,$(error Need to define $(_glib_marshal_sources_var) for $(1).[ch]))
24
25 $(1).list.stamp: $(_glib_marshal_sources) Makefile
26         $$(_GLIB_V_GEN) LC_ALL=C sed -ne 's/.*_$(_glib_marshal_prefix)_\([_A-Z]*\).*/\1/p' $$(filter-out Makefile, $$^) | sort -u | sed -e 's/__/:/' -e 's/_/,/g' > $(1).list.tmp && \
27         (cmp -s $(1).list.tmp $(1).list || cp $(1).list.tmp $(1).list) && \
28         rm -f $(1).list.tmp && \
29         echo timestamp > $$@
30
31 $(1).list: $(1).list.stamp
32         @true
33
34 $(1).h: $(1).list
35         $$(_GLIB_V_GEN) $$(GLIB_GENMARSHAL) \
36                 --prefix=_$(_glib_marshal_prefix) --header \
37                 $$(GLIB_GENMARSHAL_H_FLAGS) \
38                 $$($(_glib_marshal_prefix)_GENMARSHAL_H_FLAGS) \
39                 $$< > $$@.tmp && \
40         mv $$@.tmp $$@
41
42 $(1).c: $(1).list
43         $$(_GLIB_V_GEN) (echo "#include \"$$(subst .c,.h,$$(@F))\""; $$(GLIB_GENMARSHAL) \
44                 --prefix=_$(_glib_marshal_prefix) --body \
45                 $$(GLIB_GENMARSHAL_C_FLAGS) \
46                 $$($(_glib_marshal_prefix)_GENMARSHAL_C_FLAGS) \
47                 $$< ) > $$@.tmp && \
48         mv $$@.tmp $$@
49
50 _GLIB_CLEANFILES += $(1).list.stamp $(1).list
51 _GLIB_DISTCLEANFILES += $(1).h $(1).c
52 endef
53
54 $(foreach f,$(_GLIB_MARSHAL_GENERATED),$(eval $(call _glib_make_genmarshal_rules,$f)))
55
56
57 ### glib-mkenums
58
59 _GLIB_ENUM_TYPES_GENERATED = $(subst .h,,$(filter %enum-types.h %enumtypes.h,$(GLIB_GENERATED)))
60
61 _glib_enum_types_prefix = $(subst -,_,$(notdir $(1)))
62 _glib_enum_types_guard = __$(shell LC_ALL=C echo $(_glib_enum_types_prefix) | tr 'a-z' 'A-Z')_H__
63 _glib_enum_types_sources_var = $(_glib_enum_types_prefix)_sources
64 _glib_enum_types_sources = $(filter-out $(GLIB_GENERATED),$($(_glib_enum_types_sources_var)))
65 _glib_enum_types_h_sources = $(filter %.h,$(_glib_enum_types_sources))
66
67 define _glib_make_mkenums_rules
68 $(if $(_glib_enum_types_sources),,$(error Need to define $(_glib_enum_types_sources_var) for $(1).[ch]))
69
70 $(1).h.stamp: $(_glib_enum_types_h_sources) Makefile
71         $$(_GLIB_V_GEN) $$(GLIB_MKENUMS) \
72                 --fhead "/* Generated by glib-mkenums. Do not edit */\n\n#ifndef $(_glib_enum_types_guard)\n#define $(_glib_enum_types_guard)\n\n" \
73                 $$(GLIB_MKENUMS_H_FLAGS) \
74                 $$($(_glib_enum_types_prefix)_MKENUMS_H_FLAGS) \
75                 --fhead "#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
76                 --vhead "GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())\n" \
77                 --ftail "G_END_DECLS\n\n#endif /* $(_glib_enum_types_guard) */" \
78                 $$(filter-out Makefile, $$^) > $(1).h.tmp && \
79         (cmp -s $(1).h.tmp $(1).h || cp $(1).h.tmp $(1).h) && \
80         rm -f $(1).h.tmp && \
81         echo timestamp > $$@
82
83 $(1).h: $(1).h.stamp
84         @true
85
86 $(1).c.stamp: $(_glib_enum_types_h_sources) Makefile
87         $$(_GLIB_V_GEN) $$(GLIB_MKENUMS) \
88                 --fhead "/* Generated by glib-mkenums. Do not edit */\n\n#include \"config.h\"\n\n#include \"$(notdir $(1)).h\"\n" \
89                 $$(GLIB_MKENUMS_C_FLAGS) \
90                 $$($(_glib_enum_types_prefix)_MKENUMS_C_FLAGS) \
91                 --fhead "$$(foreach f,$$(filter-out Makefile,$$(^F)),\n#include \"$$(f)\")\n\n" \
92                 --vhead "GType\n@enum_name@_get_type (void)\n{\n  static volatile gsize g_define_type_id__volatile = 0;\n\n  if (g_once_init_enter (&g_define_type_id__volatile))\n    {\n      static const G@Type@Value values[] = {\n" \
93                 --vprod "        { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" },\n" \
94                 --vtail "        { 0, NULL, NULL }\n      };\n      GType g_define_type_id =\n        g_@type@_register_static (g_intern_static_string (\"@EnumName@\"), values);\n      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n    }\n\n  return g_define_type_id__volatile;\n}\n" \
95                 $$(filter-out Makefile, $$^) > $(1).c.tmp && \
96         (cmp -s $(1).c.tmp $(1).c || cp $(1).c.tmp $(1).c) && \
97         rm -f $(1).c.tmp && \
98         echo timestamp > $$@
99
100 $(1).c: $(1).c.stamp
101         @true
102
103 _GLIB_CLEANFILES += $(1).h.stamp $(1).c.stamp
104 _GLIB_DISTCLEANFILES += $(1).h $(1).c $(1).h.stamp $(1).c.stamp
105 endef
106
107 $(foreach f,$(_GLIB_ENUM_TYPES_GENERATED),$(eval $(call _glib_make_mkenums_rules,$f)))
108
109
110 ### glib-compile-schemas
111
112 _GLIB_ENUMS_XML_GENERATED = $(filter %.enums.xml,$(GLIB_GENERATED))
113 _GLIB_GSETTINGS_SCHEMA_FILES = $(filter %.gschema.xml,$(gsettingsschema_DATA))
114 _GLIB_GSETTINGS_VALID_FILES = $(subst .xml,.valid,$(_GLIB_GSETTINGS_SCHEMA_FILES))
115
116 _glib_enums_xml_prefix = $(subst .,_,$(notdir $(1)))
117 _glib_enums_xml_sources_var = $(_glib_enums_xml_prefix)_sources
118 _glib_enums_xml_sources = $(filter-out $(GLIB_GENERATED),$($(_glib_enums_xml_sources_var)))
119 _glib_enums_xml_namespace = $(subst .enums.xml,,$(notdir $(1)))
120
121 define _glib_make_enums_xml_rule
122 $(if $(_glib_enums_xml_sources),,$(error Need to define $(_glib_enums_xml_sources_var) for $(1)))
123
124 $(1): $(_glib_enums_xml_sources) Makefile
125         $$(_GLIB_V_GEN) $$(GLIB_MKENUMS) --comments '<!-- @comment@ -->' --fhead "<schemalist>" --vhead "  <@type@ id='$(_glib_enums_xml_namespace).@EnumName@'>" --vprod "    <value nick='@valuenick@' value='@valuenum@'/>" --vtail "  </@type@>" --ftail "</schemalist>" $$(filter-out Makefile, $$^) > $$@.tmp && mv $$@.tmp $$@
126 endef
127
128 _GLIB_V_CHECK = $(_glib_v_check_$(V))
129 _glib_v_check_ = $(_glib_v_check_$(AM_DEFAULT_VERBOSITY))
130 _glib_v_check_0 = @echo "  CHECK   " $(subst .valid,.xml,$@);
131
132 define _glib_make_schema_validate_rule
133 $(subst .xml,.valid,$(1)): $(_GLIB_ENUMS_XML_GENERATED) $(1)
134         $$(_GLIB_V_CHECK) $$(GLIB_COMPILE_SCHEMAS) --strict --dry-run $$(addprefix --schema-file=,$$^) && touch $$@
135 endef
136
137 define _glib_make_schema_rules
138 all-am: $(_GLIB_GSETTINGS_VALID_FILES)
139
140 install-data-am: glib-install-schemas-hook
141
142 glib-install-schemas-hook: install-gsettingsschemaDATA
143         @test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || (echo $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir))
144
145 uninstall-am: glib-uninstall-schemas-hook
146
147 glib-uninstall-schemas-hook: uninstall-gsettingsschemaDATA
148         @test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || (echo $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir))
149
150 .PHONY: glib-install-schemas-hook glib-uninstall-schemas-hook
151 endef
152
153 _GLIB_CLEANFILES += $(_GLIB_ENUMS_XML_GENERATED) $(_GLIB_GSETTINGS_VALID_FILES)
154
155 $(foreach f,$(_GLIB_ENUMS_XML_GENERATED),$(eval $(call _glib_make_enums_xml_rule,$f)))
156 $(foreach f,$(_GLIB_GSETTINGS_SCHEMA_FILES),$(eval $(call _glib_make_schema_validate_rule,$f)))
157 $(if $(_GLIB_GSETTINGS_SCHEMA_FILES),$(eval $(_glib_make_schema_rules)))
158
159
160 ### Cleanup
161 .PHONY: clean-glib distclean-glib
162
163 clean-am: clean-glib
164 clean-glib:
165         $(if $(strip $(_GLIB_CLEANFILES)),-rm -f $(_GLIB_CLEANFILES))
166
167 distclean-am: distclean-glib
168 distclean-glib:
169         $(if $(strip $(_GLIB_DISTCLEANFILES)),-rm -f $(_GLIB_DISTCLEANFILES))