summaryrefslogtreecommitdiff
path: root/Makefile.am
blob: 249db9878b8883c53e08de3bab5835a38d4389a5 (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
ACLOCAL_AMFLAGS	= -I scripts

SUBDIRS		= tools glib gio examples scripts tests MSVC_Net2005 MSVC_Net2008 docs
DIST_SUBDIRS	= $(SUBDIRS)

EXTRA_DIST	= build_shared/Makefile_build.am_fragment \
		  build_shared/Makefile_build_gensrc.am_fragment \
		  build_shared/Makefile_gensrc.am_fragment \
		  build_shared/Makefile_conditional.am_fragment \
		  README.win32 \
                  COPYING COPYING.tools


all-local:
	@echo "*** Everything completed ***"

dist-hook:
	@echo; echo; \
	echo "**********************************************************"; \
	echo "* IMPORTANT NOTICE:                                      *"; \
	echo "*                                                        *"; \
	echo "* Be sure you have done a complete build before running  *"; \
	echo "* 'make dist' or 'make distcheck', because otherwise     *"; \
	echo "* the tarball will _not_ contain the dependency rules    *"; \
	echo "* generated by the compiler.                             *"; \
	echo "**********************************************************"; \
	echo; echo


include $(top_srcdir)/docs/Makefile_web.am_fragment

doc_tarball_files = \
	docs/images/*.gif \
	docs/internal/*.txt docs/internal/*.dia docs/reference/html

# This doesn't work very well in a $(srcdir) != $(builddir) setup,
# but this target is for maintainer use only anyway.

glibmm-docs.tar.gz:
	find examples -name '*.cc' -o -name '*.h' -o -name '*.xpm' -o -name '*.xml' | \
	tar cf - --files-from - $(doc_tarball_files) | gzip -c --best >$@

# Upload documentation and examples:

post-html-recursive:
	list='docs examples'; for subdir in $$list; do \
	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) post-html); \
	done

post-html-local: glibmm-docs.tar.gz
	rsync $(rsync_args) glibmm-docs.tar.gz $$USER@$(web_host):$(web_path_gtkmm)

post-html: post-html-recursive post-html-local

doc-clean-recursive:
	(cd docs && $(MAKE) $(AM_MAKEFLAGS) doc-clean)

doc-clean: doc-clean-recursive

doc-rebuild:
	(cd docs && $(MAKE) $(AM_MAKEFLAGS) doc-rebuild)

SVN_REV=`svnversion -n`
URL_KEY=URL:
SVN_PATH=`svn info |grep "$(URL_KEY)" |sed -e "s/$(URL_KEY)\s*//"`
ROOT_KEY=Repository Root:
SVN_ROOT=`svn info |grep "$(ROOT_KEY)" |sed -e "s/$(ROOT_KEY)\s*//"`

tag-release: distcheck
	@svn cp -r$(SVN_REV) -m "tag $(PACKAGE) $(VERSION)" $(SVN_PATH) $(SVN_ROOT)/tags/$(PACKAGE)-$(VERSION) \
		|| (echo "Tagging failed.  Do you have local changes that are not committed?" \
		&& echo "Try running 'svn update'." && false)
	@echo "Release Tagged."

upload-release: tag-release
	scp $(DIST_ARCHIVES) master.gnome.org:
	@echo "Tarball uploaded.  Now run install-module on master.gnome.org"
	@echo "[hint: make install-module]"

RELEASE_ANNOUNCE_LIST = gnome-announce-list@gnome.org, gtkmm-list@gnome.org
release-announce:
	@echo "Please send the following announcement to:"
	@echo "$(RELEASE_ANNOUNCE_LIST)"
	@echo ""
	@echo "Subject: ANNOUNCE: $(PACKAGE) $(VERSION) released"
	@echo ""
	@echo "============================== CUT HERE =============================="
	@echo "* ABOUT $(PACKAGE) *"
	@echo ""
	@echo "  $(PACKAGE) is a C++ API for glib and gio.  It is useful on its own "
	@echo "  and is a dependency of gtkmm, the C++ API for GTK+."
	@echo ""
	@echo "  $(PACKAGE) $(GLIBMM_RELEASE) wraps new API in glib $(GLIBMM_RELEASE), including the gio library, "
	@echo "  and is API/ABI-compatibile with older versions of glibmm back to "
	@echo "  version 2.4. It is a version of the glibmm-2.4 API."
	@echo ""
	@echo "  For more information, please visit http://gtkmm.org/"
	@echo ""
	@echo "* DOWNLOAD *"
	@echo ""
	@echo "  Source packages for $(PACKAGE) (as well as API-stable bindings for the "
	@echo "  rest of the GNOME platform) can be downloaded from:"
	@echo ""
	@echo "    http://www.gtkmm.org/download.shtml"
	@echo ""
	@echo "* DEVELOPMENT *"
	@echo ""
	@echo "  There is active discussion on the mailing list: "
	@echo "  http://www.gtkmm.org/mailinglist.shtml"
	@echo "  and in the #c++ channel on irc.gnome.org"
	@echo ""
	@echo "  gtkmm and $(PACKAGE) stay in-sync with GTK+ by following the official "
	@echo "  GNOME release schedule:"
	@echo ""
	@echo "    http://www.gnome.org/start/unstable/"
	@echo ""
	@echo "* CHANGES *"
	@echo ""
	@echo "  --- INSERT NEWS HERE ---"
	@echo "============================== CUT HERE =============================="

install-module:
	ssh master.gnome.org install-module $(DIST_ARCHIVES)

release: upload-release release-announce

#FIXME: use generic paths, rather than my particular paths
H2DEF = env python /opt/gnome2/share/pygobject/2.0/codegen/h2def.py
DEFS_INC_DIR = /opt/gnome2/include
GEN_ENUM = env perl ./tools/enum.pl
GEN_EXTRA_DEFS_GLIB = ./tools/extra_defs_gen/generate_extra_defs
GEN_EXTRA_DEFS_GIO = ./tools/extra_defs_gen/generate_defs_gio
DOCEXTRACT = /home/jonathon/gnome-build/pygobject/codegen/docextract_to_xml.py

defs: glib-defs gio-defs docextract
	@echo
	@echo "*** Make sure to examine the .defs files to make sure they look reasonable"
	@echo

glib-defs:
	$(H2DEF) $(DEFS_INC_DIR)/glib-2.0/glib/*.h > glib/src/glib_functions.defs
	$(H2DEF) $(DEFS_INC_DIR)/glib-2.0/gobject/*.h > glib/src/gobject_functions.defs
	$(H2DEF) $(DEFS_INC_DIR)/glib-2.0/gmodule.h > glib/src/gmodule_functions.defs
	$(GEN_ENUM) $(DEFS_INC_DIR)/glib-2.0/glib/*.h > glib/src/glib_enums.defs
	$(GEN_ENUM) $(DEFS_INC_DIR)/glib-2.0/gobject/*.h > glib/src/gobject_enums.defs
	$(GEN_ENUM) $(DEFS_INC_DIR)/glib-2.0/gmodule.h > glib/src/gmodule_enums.defs

gio-defs:
	$(H2DEF) $(DEFS_INC_DIR)/glib-2.0/gio/*.h \
		$(DEFS_INC_DIR)/gio-unix-2.0/gio/*.h > gio/src/gio_methods.defs
	$(GEN_ENUM) $(DEFS_INC_DIR)/glib-2.0/gio/*.h \
		$(DEFS_INC_DIR)/gio-unix-2.0/gio/*.h > gio/src/gio_enums.defs
	$(GEN_EXTRA_DEFS_GIO) > gio/src/gio_signals.defs

docextract:
	$(DOCEXTRACT) -s ../glib/glib \
		-s ../glib/docs/reference/glib \
		-s ../glib/gobject \
		-s ../glib/docs/reference/gobject > glib/src/glib_docs.xml
	$(DOCEXTRACT) -s ../glib/gio \
		-s ../glib/docs/reference/gio > gio/src/gio_docs.xml


.PHONY: post-html post-html-local post-html-recursive doc-clean doc-clean-recursive doc-rebuild release tag-release upload-release release-announce install-module defs glib-defs gio-defs docextract