1 # Makefile.am for gtk+/gtk
3 SUBDIRS=stock-icons theme-bits
9 DIST_SUBDIRS=stock-icons theme-bits xdgmime
12 -DG_LOG_DOMAIN=\"Gtk\" \
13 -DGTK_LIBDIR=\"$(libdir)\" \
14 -DGTK_DATADIR=\"$(datadir)\" \
15 -DGTK_DATA_PREFIX=\"$(prefix)\" \
16 -DGTK_SYSCONFDIR=\"$(sysconfdir)\" \
17 -DGTK_VERSION=\"$(GTK_VERSION)\" \
18 -DGTK_BINARY_VERSION=\"$(GTK_BINARY_VERSION)\" \
19 -DGTK_HOST=\"$(host)\" \
21 -I$(top_builddir)/gtk \
22 -I$(top_srcdir) -I../gdk \
24 -I$(top_srcdir)/gdk-pixbuf -I../gdk-pixbuf \
25 -DG_DISABLE_DEPRECATED \
26 -DGDK_PIXBUF_DISABLE_DEPRECATED \
27 -DGDK_DISABLE_DEPRECATED \
28 -DGTK_DISABLE_DEPRECATED \
29 -DGTK_FILE_SYSTEM_ENABLE_UNSUPPORTED \
36 no_undefined = -no-undefined
41 gtk_win32_symbols = -export-symbols $(gtk_def)
43 gtk_win32_res = gtk-win32-res.o
44 gtk_win32_res_ldflag = -Wl,$(gtk_win32_res)
46 gtk-win32-res.o : gtk-win32.rc
47 $(WINDRES) gtk-win32.rc $@
49 install-def-file: gtk.def
50 $(INSTALL) $(gtk_def) $(DESTDIR)$(libdir)/gtk-win32-2.0.def
52 -rm $(DESTDIR)$(libdir)/gtk-win32-2.0.def
59 noinst_DATA = gtk-win32-$(GTK_API_VERSION).lib
61 gtk-win32-$(GTK_API_VERSION).lib: libgtk-win32-$(GTK_API_VERSION).la gtk.def
62 lib -name:libgtk-win32-$(GTK_API_VERSION)-@LT_CURRENT_MINUS_AGE@.dll -def:gtk.def -out:$@
65 $(INSTALL) gtk-win32-$(GTK_API_VERSION).lib $(DESTDIR)$(libdir)
68 -rm $(DESTDIR)$(libdir)/gtk-win32-$(GTK_API_VERSION).lib
75 (echo -e EXPORTS; $(CPP) -P -DINCLUDE_VARIABLES -DG_OS_WIN32 -DALL_FILES - <$(srcdir)/gtk.symbols | sed -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g') > gtk.def
77 gtkalias.h: gtk.symbols
78 $(PERL) $(srcdir)/makegtkalias.pl < $(srcdir)/gtk.symbols > gtkalias.h
79 gtkaliasdef.c: gtk.symbols
80 $(PERL) $(srcdir)/makegtkalias.pl -def < $(srcdir)/gtk.symbols > gtkaliasdef.c
86 # libtool stuff: set version and export symbols for resolving
87 # since automake doesn't support conditionalized libsomething_la_LDFLAGS
88 # we use the general approach here
89 libgtkincludedir = $(includedir)/gtk-2.0/gtk
91 $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
92 $(top_builddir)/gdk/$(gdktargetlib) \
96 libadd += xdgmime/libxdgmime.la
99 # common options for the various packages.
101 -version-info $(LT_VERSION_INFO) \
102 -export-dynamic $(no_undefined) $(LIBTOOL_EXPORT_OPTIONS) \
103 -rpath $(libdir) $(libgtk_target_ldflags)
107 # setup source file variables
110 # GTK+ header files for public installation (non-generated, or generated
112 gtk_public_h_sources = \
134 gtkcellrendereraccel.h \
135 gtkcellrenderercombo.h \
136 gtkcellrendererpixbuf.h \
137 gtkcellrendererprogress.h \
138 gtkcellrenderertext.h \
139 gtkcellrenderertoggle.h \
148 gtkcolorseldialog.h \
161 gtkentrycompletion.h \
166 gtkfilechooserbutton.h \
167 gtkfilechooserdialog.h \
168 gtkfilechooserwidget.h \
191 gtkimcontextsimple.h \
193 gtkimmulticontext.h \
208 gtkmenutoolbutton.h \
226 gtkradiotoolbutton.h \
232 gtkscrolledwindow.h \
235 gtkseparatormenuitem.h \
236 gtkseparatortoolitem.h \
247 gtktearoffmenuitem.h \
260 gtktoggletoolbutton.h \
269 gtktreemodelfilter.h \
275 gtktreeviewcolumn.h \
289 # Installed header files without compatibility guarantees
290 # that are not include in gtk/gtk.h
291 gtk_semi_private_h_sources = \
295 # GTK+ header files that don't get installed
296 gtk_private_h_sources = \
299 gtkfilechooserembed.h \
300 gtkfilechooserentry.h \
301 gtkfilechooserdefault.h \
302 gtkfilechooserprivate.h \
303 gtkfilechooserutils.h \
304 gtkfilesystemunix.h \
305 gtkfilesystemmodel.h \
313 gtktextchildprivate.h \
317 gtktextiterprivate.h \
318 gtktextmarkprivate.h \
319 gtktexttagprivate.h \
323 gtkwindow-decorate.h \
324 gtktoggleactionprivate.h
326 # GTK+ C sources to build the library from
349 gtkcellrendereraccel.c \
350 gtkcellrenderercombo.c \
351 gtkcellrendererpixbuf.c \
352 gtkcellrendererprogress.c \
353 gtkcellrenderertext.c \
354 gtkcellrenderertoggle.c \
362 gtkcolorseldialog.c \
374 gtkentrycompletion.c \
378 gtkfilechooserbutton.c \
379 gtkfilechooserdialog.c \
380 gtkfilechooserembed.c \
381 gtkfilechooserentry.c \
382 gtkfilechooserdefault.c \
383 gtkfilechooserutils.c \
384 gtkfilechooserwidget.c \
388 gtkfilesystemmodel.c \
412 gtkimcontextsimple.c \
414 gtkimmulticontext.c \
434 gtkmenutoolbutton.c \
454 gtkradiotoolbutton.c \
461 gtkscrolledwindow.c \
465 gtkseparatormenuitem.c \
466 gtkseparatortoolitem.c \
476 gtktearoffmenuitem.c \
483 gtktextiterprivate.h \
486 gtktextmarkprivate.h \
497 gtktoggletoolbutton.c \
507 gtktreemodelfilter.c \
513 gtktreeviewcolumn.c \
526 gtkwindow-decorate.c \
531 gtk_private_h_sources += gtkfilesystemunix.h
532 gtk_c_sources += gtkfilesystemunix.c
536 gtk_private_h_sources += gtkfilesystemwin32.h
537 gtk_c_sources += gtkfilesystemwin32.c
541 gtk_private_h_sources += gtkxembed.h gtktrayicon.h
550 gtk_private_h_sources += gtkwin32embed.h
551 gtk_c_sources += gtkplug-win32.c gtksocket-win32.c gtkwin32embed.c
553 gtk_c_sources += gtkplug-stub.c gtksocket-stub.c
557 # we use our own built_sources variable rules to avoid automake's
558 # BUILT_SOURCES oddities
559 # we generate frequently rebuild files piggyback on a stamp file, so sources
560 # depending on them only get rebuild when the built source actually changed
563 # built sources that get installed with the header files
564 gtk_built_public_sources = \
568 # built sources that don't get installed
569 gtk_built_private_headers = \
573 gtk_built_sources = \
579 ${gtk_built_private_headers} \
580 ${gtk_built_public_sources}
583 stamp-gtkmarshalers.h \
585 stamp-gtktypebuiltins.h
587 # non-header sources (headers should be specified in the above variables)
588 # that don't serve as direct make target sources, i.e. they don't have
589 # their own .lo rules and don't get publically installed
590 gtk_extra_sources = \
597 # setup GTK+ sources and their dependencies
599 MAINTAINERCLEANFILES = $(gtk_built_sources) $(stamp_files)
601 EXTRA_DIST = $(gtk_private_h_sources) $(gtk_extra_sources)
602 EXTRA_DIST += $(gtk_built_sources)
605 # rules to generate built sources
607 # setup autogeneration dependencies
608 gen_sources = xgen-gdef xgen-gtbh xgen-gtic xgen-gmh xgen-gmc xgen-gmlh xgen-gmlc
609 CLEANFILES = $(gen_sources)
611 BUILT_SOURCES = $(gtk_built_sources)
613 # all autogenerated files need to be generated in the srcdir,
614 # so old versions get remade and are not confused with newer
615 # versions in the build dir. thus a development setup requires
616 # srcdir to be writable, passing --disable-rebuilds to
617 # ../configure will supress all autogeneration rules.
618 gtkmarshalers.h: stamp-gtkmarshalers.h
620 stamp-gtkmarshalers.h: @REBUILD@ gtkmarshalers.list
621 $(GLIB_GENMARSHAL) --prefix=_gtk_marshal $(srcdir)/gtkmarshalers.list --header >> xgen-gmlh \
622 && (cmp -s xgen-gmlh gtkmarshalers.h || cp xgen-gmlh gtkmarshalers.h) \
624 && echo timestamp > $(@F)
625 gtkmarshalers.c: @REBUILD@ gtkmarshalers.list
626 (echo "#include \"gtkalias.h\""; $(GLIB_GENMARSHAL) --prefix=_gtk_marshal $(srcdir)/gtkmarshalers.list --body) >> xgen-gmlc \
627 && cp xgen-gmlc gtkmarshalers.c \
630 gtkmarshal.h: stamp-gtkmarshal.h
632 stamp-gtkmarshal.h: @REBUILD@ gtkmarshal.list
633 echo "#ifndef GTK_DISABLE_DEPRECATED" > xgen-gmh \
634 && $(GLIB_GENMARSHAL) --prefix=gtk_marshal $(srcdir)/gtkmarshal.list --header >> xgen-gmh \
635 && echo "#endif /* GTK_DISABLE_DEPRECATED */" >> xgen-gmh \
636 && (cmp -s xgen-gmh gtkmarshal.h || cp xgen-gmh gtkmarshal.h) \
638 && echo timestamp > $(@F)
639 gtkmarshal.c: @REBUILD@ gtkmarshal.list
640 (echo "#include \"gtkalias.h\""; $(GLIB_GENMARSHAL) --prefix=gtk_marshal $(srcdir)/gtkmarshal.list --body) >> xgen-gmc \
641 && cp xgen-gmc gtkmarshal.c \
644 gtktypebuiltins.h: stamp-gtktypebuiltins.h
646 stamp-gtktypebuiltins.h: @REBUILD@ $(gtk_public_h_sources) Makefile
647 ( cd $(srcdir) && $(GLIB_MKENUMS) \
648 --fhead "#ifndef __GTK_TYPE_BUILTINS_H__\n#define __GTK_TYPE_BUILTINS_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
649 --fprod "/* enumerations from \"@filename@\" */\n" \
650 --vhead "GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define GTK_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
651 --ftail "G_END_DECLS\n\n#endif /* __GTK_TYPE_BUILTINS_H__ */" \
652 $(gtk_public_h_sources) ) >> xgen-gtbh \
653 && (cmp -s xgen-gtbh gtktypebuiltins.h || cp xgen-gtbh gtktypebuiltins.h ) \
655 && echo timestamp > $(@F)
656 gtktypebuiltins.c: @REBUILD@ $(gtk_public_h_sources) Makefile
657 ( cd $(srcdir) && $(GLIB_MKENUMS) \
658 --fhead "#undef GTK_DISABLE_DEPRECATED\n#define GTK_ENABLE_BROKEN\n#include \"gtk.h\"\n#include \"gtkprivate.h\"\n#include \"gtkalias.h\"\n" \
659 --ftail "#define __GTK_TYPE_BUILTINS_C__\n#include \"gtkaliasdef.c\"\n" \
660 --fprod "\n/* enumerations from \"@filename@\" */" \
661 --vhead "GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {" \
662 --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
663 --vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (g_intern_static_string (\"@EnumName@\"), values);\n }\n return etype;\n}\n" \
664 $(gtk_public_h_sources) ) > xgen-gtbc \
665 && cp xgen-gtbc gtktypebuiltins.c \
669 lib_LTLIBRARIES = $(gtktargetlib)
671 gtkincludedir = $(includedir)/gtk-2.0/gtk
672 gtkinclude_HEADERS = $(gtk_public_h_sources) $(gtk_semi_private_h_sources) $(gtk_built_public_sources) gtkversion.h
674 libgtk_x11_2_0_la_SOURCES = $(gtk_c_sources)
675 libgtk_linux_fb_2_0_la_SOURCES = $(gtk_c_sources)
676 libgtk_win32_2_0_la_SOURCES = $(gtk_c_sources)
678 libgtk_x11_2_0_la_LDFLAGS = $(libtool_opts)
679 libgtk_linux_fb_2_0_la_LDFLAGS = $(libtool_opts)
680 libgtk_win32_2_0_la_LDFLAGS = $(libtool_opts)
682 libgtk_x11_2_0_la_LIBADD = $(libadd)
683 libgtk_linux_fb_2_0_la_LIBADD = $(libadd)
684 libgtk_win32_2_0_la_LIBADD = $(libadd) -lole32 -lgdi32
685 libgtk_win32_2_0_la_DEPENDENCIES = $(gtk_def) $(gtk_win32_res)
688 libgtk_target_ldflags = $(gtk_win32_res_ldflag) $(gtk_win32_symbols)
690 EXTRA_LTLIBRARIES = libgtk-x11-2.0.la libgtk-linux-fb-2.0.la libgtk-win32-2.0.la
693 if DISABLE_EXPLICIT_DEPS
694 $(SHELL) $(top_srcdir)/sanitize-la.sh $(DESTDIR)$(libdir)/$(gtktargetlib)
697 # Install a RC file for the default GTK+ theme, and key themes
698 install-data-local: install-ms-lib install-def-file
699 $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Raleigh/gtk-2.0
700 $(INSTALL_DATA) $(srcdir)/gtkrc.default $(DESTDIR)$(datadir)/themes/Raleigh/gtk-2.0/gtkrc
701 $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Default/gtk-2.0-key
702 $(INSTALL_DATA) $(srcdir)/gtkrc.key.default $(DESTDIR)$(datadir)/themes/Default/gtk-2.0-key/gtkrc
703 $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Emacs/gtk-2.0-key
704 $(INSTALL_DATA) $(srcdir)/gtkrc.key.emacs $(DESTDIR)$(datadir)/themes/Emacs/gtk-2.0-key/gtkrc
706 uninstall-local: uninstall-ms-lib uninstall-def-file
707 rm -f $(DESTDIR)$(datadir)/themes/Raleigh/gtk-2.0/gtkrc
708 rm -f $(DESTDIR)$(datadir)/themes/Default/gtk-2.0-key/gtkrc
709 rm -f $(DESTDIR)$(datadir)/themes/Emacs/gtk-2.0-key/gtkrc
711 # if srcdir!=builddir, clean out maintainer-clean files from builddir
712 # this allows dist to pass.
714 if test $(srcdir) != .; then \
715 rm -f $(MAINTAINERCLEANFILES); \
718 DEPS = $(gtktargetlib) $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la $(top_builddir)/gdk/$(gdktargetlib)
720 TEST_DEPS = $(DEPS) gtk.immodules
724 $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la \
725 $(top_builddir)/gdk/$(gdktargetlib)
730 bin_PROGRAMS = gtk-query-immodules-2.0 gtk-update-icon-cache
732 gtk_query_immodules_2_0_DEPENDENCIES = $(DEPS)
733 gtk_query_immodules_2_0_LDADD = $(LDADDS)
735 gtk_query_immodules_2_0_SOURCES = queryimmodules.c
738 gtk_update_icon_cache_DEPENDENCIES = $(DEPS)
739 gtk_update_icon_cache_LDADD = $(LDADDS)
741 gtk_update_icon_cache_SOURCES = updateiconcache.c
743 .PHONY: files test test-debug
746 @files=`ls $(DISTFILES) 2> /dev/null `; for p in $$files; do \
761 gtkfilesystemwin32.h \
762 gtkfilesystemwin32.c \