## Makefile for building the gtk DLL with Microsoft C ## Use: nmake -f makefile.msc ## There is no install target, you have to decide where and ## how to install for yourself. TOP = ..\.. !INCLUDE $(TOP)/glib/build/win32/make.msc ################################################################ # Possibly override versions from build/win32/module.defs GTK_VER = @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@ GDK_PIXBUF_VER = @GDK_PIXBUF_MAJOR@.@GDK_PIXBUF_MINOR@ GDK_LIBS = ../gdk/gdk-win32-$(GTK_VER).lib GTK_LIBS = gtk-win32-$(GTK_VER).lib GDK_PIXBUF_LIBS = ../gdk-pixbuf/gdk_pixbuf-$(GDK_PIXBUF_VER).lib GTK_BINARY_VERSION = @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@LT_CURRENT@ # Perl and awk are needed to generate some source files. # These generated source files are distribuyted with the Win32 GTk+ source # distributions, so don't worry if you don't have perl and awk. PERL = perl AWK = gawk INCLUDES = -FImsvc_recommended_pragmas.h -I . -I .. -I ../gdk -I ../gdk-pixbuf DEPCFLAGS = $(PANGO_CFLAGS) $(GLIB_CFLAGS) $(LIBICONV_CFLAGS) \ $(INTL_CFLAGS) $(ATK_CFLAGS) $(CAIRO_CFLAGS) LDFLAGS = $(ATK_LIBS) /link /machine:ix86 $(LINKDEBUG) # Some files use near as an identifier # Don't define GTK_COMPILATION here, because it's for gtk-x.x.dll only DEFINES = $(G_DEBUGGING) -DGTK_DISABLE_COMPAT_H -DG_LOG_DOMAIN=\"Gtk\" -Dnear=xxnear \ -DPANGO_ENABLE_BACKEND \ -DGTK_VERSION=\"$(GTK_VER)\" -DGTK_BINARY_VERSION=\"$(GTK_BINARY_VERSION)\" \ -DGTK_HOST=\"win32\" \ -DGTK_FILE_SYSTEM_ENABLE_UNSUPPORTED TOUCH = copy makefile.msc+nul gtk-stocks-icons : cd stock-icons nmake -nologo -f makefile.msc cd .. all : \ ..\config.h \ generated \ gtk-stocks-icons \ libgtk-win32-$(GTK_VER)-0.dll \ gtk-query-immodules-$(GTK_VER).exe \ # gtk-win32-$(GTK_VER)s.lib \ # gtk-x11-$(GTK_VER).dll gtk_OBJECTS = \ fnmatch.obj \ gtkaboutdialog.obj \ gtkaccelgroup.obj \ gtkaccellabel.obj \ gtkaccelmap.obj \ gtkaccessible.obj \ gtkaction.obj \ gtkactiongroup.obj \ gtkadjustment.obj \ gtkalignment.obj \ gtkarrow.obj \ gtkaspectframe.obj \ gtkbin.obj \ gtkbindings.obj \ gtkbbox.obj \ gtkbox.obj \ gtkbutton.obj \ gtkcalendar.obj \ gtkcelleditable.obj \ gtkcelllayout.obj \ gtkcellrenderer.obj \ gtkcellrenderercombo.obj \ gtkcellrenderertext.obj \ gtkcellrenderertoggle.obj \ gtkcellrendererpixbuf.obj \ gtkcellrendererprogress.obj \ gtkcellview.obj \ gtkcheckbutton.obj \ gtkcheckmenuitem.obj \ gtkclipboard.obj \ gtkclist.obj \ gtkcolorbutton.obj \ gtkcolorsel.obj \ gtkcolorseldialog.obj \ gtkcombo.obj \ gtkcombobox.obj \ gtkcomboboxentry.obj \ gtkcontainer.obj \ gtkctree.obj \ gtkcurve.obj \ gtkdialog.obj \ gtkdnd.obj \ gtkdrawingarea.obj \ gtkeditable.obj \ gtkentry.obj \ gtkentrycompletion.obj \ gtkeventbox.obj \ gtkexpander.obj \ gtkfilechooser.obj \ gtkfilechooserbutton.obj \ gtkfilechooserdefault.obj \ gtkfilechooserdialog.obj \ gtkfilechooserembed.obj \ gtkfilechooserentry.obj \ gtkfilechooserutils.obj \ gtkfilechooserwidget.obj \ gtkfilefilter.obj \ gtkfilesel.obj \ gtkfilesystem.obj \ gtkfilesystemmodel.obj \ gtkfilesystemwin32.obj \ gtkfixed.obj \ gtkfontsel.obj \ gtkfontbutton.obj \ gtkframe.obj \ gtkgamma.obj \ gtkgc.obj \ gtkhandlebox.obj \ gtkhbbox.obj \ gtkhbox.obj \ gtkhpaned.obj \ gtkhruler.obj \ gtkhscale.obj \ gtkhscrollbar.obj \ gtkhseparator.obj \ gtkhsv.obj \ gtkiconcache.obj \ gtkiconfactory.obj \ gtkicontheme.obj \ gtkiconview.obj \ gtkimage.obj \ gtkimagemenuitem.obj \ gtkimcontext.obj \ gtkimcontextsimple.obj \ gtkimmodule.obj \ gtkimmulticontext.obj \ gtkinputdialog.obj \ gtkinvisible.obj \ gtkitem.obj \ gtkitemfactory.obj \ gtkkeyhash.obj \ gtklabel.obj \ gtklayout.obj \ gtklist.obj \ gtklistitem.obj \ gtkliststore.obj \ gtkmain.obj \ gtkmarshalers.obj \ gtkmarshal.obj \ gtkmenu.obj \ gtkmenubar.obj \ gtkmenuitem.obj \ gtkmenushell.obj \ gtkmenutoolbutton.obj \ gtkmessagedialog.obj \ gtkmisc.obj \ gtkmnemonichash.obj \ gtkmodules.obj \ gtknotebook.obj \ gtkobject.obj \ gtkoldeditable.obj \ gtkoptionmenu.obj \ gtkpaned.obj \ gtkpathbar.obj \ gtkpixmap.obj \ # gtkplug.obj \ gtkpreview.obj \ gtkprogress.obj \ gtkprogressbar.obj \ gtkradioaction.obj \ gtkradiobutton.obj \ gtkradiotoolbutton.obj \ gtkradiomenuitem.obj \ gtkrange.obj \ gtkrbtree.obj \ gtkrc.obj \ gtkruler.obj \ gtkscale.obj \ gtkscrollbar.obj \ gtkscrolledwindow.obj \ gtkselection.obj \ gtkseparator.obj \ gtkseparatormenuitem.obj \ gtkseparatortoolitem.obj \ gtksequence.obj \ gtksettings.obj \ gtksignal.obj \ gtksizegroup.obj \ # gtksocket.obj \ gtkspinbutton.obj \ gtkstyle.obj \ gtkstatusbar.obj \ gtkstock.obj \ gtktable.obj \ gtktearoffmenuitem.obj \ gtktext.obj \ gtktextbtree.obj \ gtktextbuffer.obj \ gtktextchild.obj \ gtktextdisplay.obj \ gtktextiter.obj \ gtktextlayout.obj \ gtktextmark.obj \ gtktextsegment.obj \ gtktexttag.obj \ gtktexttagtable.obj \ gtktexttypes.obj \ gtktextutil.obj \ gtktextview.obj \ gtkthemes.obj \ gtktipsquery.obj \ gtktoggleaction.obj \ gtktogglebutton.obj \ gtktoggletoolbutton.obj \ gtktoolbar.obj \ gtktoolbutton.obj \ gtktoolitem.obj \ gtktooltips.obj \ gtktree.obj \ gtktreedatalist.obj \ gtktreednd.obj \ gtktreeitem.obj \ gtktreemodel.obj \ gtktreemodelfilter.obj \ gtktreemodelsort.obj \ gtktreeselection.obj \ gtktreesortable.obj \ gtktreestore.obj \ gtktreeview.obj \ gtktreeviewcolumn.obj \ gtktypeutils.obj \ gtktypebuiltins.obj \ gtkuimanager.obj \ gtkvbbox.obj \ gtkvbox.obj \ gtkviewport.obj \ gtkvpaned.obj \ gtkvruler.obj \ gtkvscale.obj \ gtkvscrollbar.obj \ gtkvseparator.obj \ gtkwidget.obj \ gtkwindow.obj \ gtkwindow-decorate.obj # Source headers which are non-autogenerated headers gtk_public_h_sources = \ gtk.h \ gtkaboutdialog.h \ gtkaccelgroup.h \ gtkaccellabel.h \ gtkaccelmap.h \ gtkaccessible.h \ gtkaction.h \ gtkactiongroup.h \ gtkadjustment.h \ gtkalignment.h \ gtkarrow.h \ gtkaspectframe.h \ gtkbbox.h \ gtkbin.h \ gtkbindings.h \ gtkbox.h \ gtkbutton.h \ gtkcalendar.h \ gtkcelleditable.h \ gtkcelllayout.h \ gtkcellrenderer.h \ gtkcellrendererpixbuf.h \ gtkcellrenderertext.h \ gtkcellrenderertoggle.h \ gtkcellview.h \ gtkcheckbutton.h \ gtkcheckmenuitem.h \ gtkclipboard.h \ gtkclist.h \ gtkclipboard.h \ gtkcolorbutton.h \ gtkcolorsel.h \ gtkcolorseldialog.h \ gtkcombo.h \ gtkcombobox.h \ gtkcomboboxentry.h \ gtkcontainer.h \ gtkctree.h \ gtkcurve.h \ gtkdebug.h \ gtkdialog.h \ gtkdnd.h \ gtkdrawingarea.h \ gtkeditable.h \ gtkentry.h \ gtkentrycompletion.h \ gtkenums.h \ gtkeventbox.h \ gtkexpander.h \ gtkfilechooser.h \ gtkfilechooserdialog.h \ gtkfilechooserwidget.h \ gtkfilefilter.h \ gtkfilesel.h \ gtkfixed.h \ gtkfontbutton.h \ gtkfontsel.h \ gtkframe.h \ gtkgamma.h \ gtkgc.h \ gtkhandlebox.h \ gtkhbbox.h \ gtkhbox.h \ gtkhpaned.h \ gtkhruler.h \ gtkhscale.h \ gtkhscrollbar.h \ gtkhseparator.h \ gtkhsv.h \ gtkiconfactory.h \ gtkicontheme.h \ gtkiconview.h \ gtkimage.h \ gtkimagemenuitem.h \ gtkimcontext.h \ gtkimcontextsimple.h \ gtkimmodule.h \ gtkimmulticontext.h \ gtkinputdialog.h \ gtkinvisible.h \ gtkitem.h \ gtkitemfactory.h \ gtklabel.h \ gtklayout.h \ gtklist.h \ gtklistitem.h \ gtkliststore.h \ gtkmain.h \ gtkmarshal.h \ gtkmenu.h \ gtkmenubar.h \ gtkmenuitem.h \ gtkmenushell.h \ gtkmessagedialog.h \ gtkmisc.h \ gtknotebook.h \ gtkobject.h \ gtkoldeditable.h \ gtkoptionmenu.h \ gtkpaned.h \ gtkpixmap.h \ gtkplug.h \ gtkpreview.h \ gtkprivate.h \ gtkprogress.h \ gtkprogressbar.h \ gtkradioaction.h \ gtkradiobutton.h \ gtkradiomenuitem.h \ gtkradiotoolbutton.h \ gtkrange.h \ gtkrc.h \ gtkruler.h \ gtkscale.h \ gtkscrollbar.h \ gtkscrolledwindow.h \ gtkselection.h \ gtkseparator.h \ gtkseparatormenuitem.h \ gtkseparatortoolitem.h \ gtksettings.h \ gtksignal.h \ gtksizegroup.h \ gtksignal.h \ gtksocket.h \ gtkspinbutton.h \ gtkstatusbar.h \ gtkstock.h \ gtkstyle.h \ gtktable.h \ gtktearoffmenuitem.h \ gtktext.h \ gtktextbuffer.h \ gtktextchild.h \ gtktextdisplay.h \ gtktextiter.h \ gtktextlayout.h \ gtktextmark.h \ gtktexttag.h \ gtktexttagtable.h \ gtktextview.h \ gtktipsquery.h \ gtktoggleaction.h \ gtktogglebutton.h \ gtktoggletoolbutton.h \ gtktoolbar.h \ gtktoolbutton.h \ gtktoolitem.h \ gtktooltips.h \ gtktree.h \ gtktreednd.h \ gtktreeitem.h \ gtktreemodel.h \ gtktreemodelfilter.h \ gtktreemodelsort.h \ gtktreeselection.h \ gtktreesortable.h \ gtktreestore.h \ gtktreeview.h \ gtktreeviewcolumn.h \ gtktypeutils.h \ gtkuimanager.h \ gtkvbbox.h \ gtkvbox.h \ gtkviewport.h \ gtkvpaned.h \ gtkvruler.h \ gtkvscale.h \ gtkvscrollbar.h \ gtkvseparator.h \ gtkwidget.h \ gtkwindow.h # these aren't use here, but listed for reference gtk_extra_sources = \ gtkversion.h \ gtk-boxed.defs \ gtkmarshal.list \ ..\config.h : ..\config.h.win32 copy ..\config.h.win32 ..\config.h GENERATED = \ gtktypebuiltins.h gtktypebuiltins.c \ gtkmarshal.h gtkmarshal.c gtkmarshalers.h gtkmarshalers.c \ gtk.def gtkalias.h gtkaliasdef.c # # Generated source files: # generated : $(GENERATED) $(TOUCH) generated gtk.def: gtk.symbols makefile.msc echo EXPORTS > gtk.def cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DALL_FILES gtk.symbols >> gtk.def gtkalias.h: gtk.symbols cl /EP -DG_OS_WIN32 -DGTK_WINDOWING_WIN32 -DINCLUDE_INTERNAL_SYMBOLS gtk.symbols | $(PERL) makegtkalias.pl > gtkalias.h gtkaliasdef.c: gtk.symbols perl makegtkalias.pl -def < gtk.symbols > gtkaliasdef.c # generate type identifier header (GTK_TYPE_WIDGET_FLAGS) # use 'echo' to work around 'command line too long' gtktypebuiltins.h: $(gtk_public_h_sources) makefile.msc echo #ifndef __GTK_TYPE_BUILTINS_H__ > gtktypebuiltins.h echo #define __GTK_TYPE_BUILTINS_H__ >> gtktypebuiltins.h echo #include "glib-object.h" >> gtktypebuiltins.h echo G_BEGIN_DECLS >> gtktypebuiltins.h $(PERL) $(GLIB)\gobject\glib-mkenums \ --fprod "/* enumerations from \"@filename@\" */\n" \ --vhead "GType @enum_name@_get_type (void);\n#define GTK_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ --ftail "G_END_DECLS\n\n#endif /* __GTK_TYPE_BUILTINS_H__ */" \ $(gtk_public_h_sources) >> gtktypebuiltins.h gtktypebuiltins.c: $(gtk_public_h_sources) makefile.msc $(PERL) $(GLIB)\gobject\glib-mkenums \ --fhead "#define GTK_ENABLE_BROKEN\n#include \"gtk.h\"\n#include \"gtkprivate.h\"" \ --fprod "\n/* enumerations from \"@filename@\" */" \ --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[] = {" \ --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ --vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \ $(gtk_public_h_sources) > xgen-gtbc copy xgen-gtbc gtktypebuiltins.c # private marshalers gtkmarshalers.h : gtkmarshalers.list $(GLIB)\gobject\glib-genmarshal --prefix=_gtk_marshal gtkmarshalers.list --header >>gtkmarshalers.h gtkmarshalers.c : gtkmarshalers.list $(GLIB)\gobject\glib-genmarshal --prefix=_gtk_marshal gtkmarshalers.list --body >gtkmarshalers.c # public, deprecated marshalers gtkmarshal.h : gtkmarshal.list echo #ifndef GTK_DISABLE_DEPRECATED >gtkmarshal.h $(GLIB)\gobject\glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --header >>gtkmarshal.h echo #endif /* GTK_DISABLE_DEPRECATED */ >>gtkmarshal.h gtkmarshal.c : gtkmarshal.list $(GLIB)\gobject\glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --body >gtkmarshal.c gtksignal.obj : gtksignal.c gtkmarshal.c gtkmarshal.h $(CC) $(CFLAGS) -GD -c -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" gtksignal.c gtk-win32.res : gtk-win32.rc rc -DBUILDNUMBER=0 -r -fo gtk-win32.res gtk-win32.rc # # Linking: # libgtk-win32-$(GTK_VER)-0.dll : $(gtk_OBJECTS) gtk.def gtk-win32.res $(CC) $(CFLAGS) -LD -Fm -Fe$@ $(gtk_OBJECTS) gtk-win32.res \ $(GDK_LIBS) $(GDK_PIXBUF_LIBS) $(PANGO_LIBS) $(INTL_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) \ $(CAIRO_LIBS) $(PANGOCAIRO_LIBS) \ gdi32.lib user32.lib advapi32.lib wsock32.lib shell32.lib ole32.lib \ $(LDFLAGS) /implib:gtk-win32-$(GTK_VER).lib /def:gtk.def gtk-win32-$(GTK_VER)s.lib : $(gtk_OBJECTS) lib /out:gtk-win32-$(GTK_VER)s.lib $(gtk_OBJECTS) gtk-query-immodules-$(GTK_VER).exe : queryimmodules.obj $(CC) $(CFLAGS) -Fe$@ queryimmodules.obj $(GTK_LIBS) $(GLIB_LIBS) $(PANGO_LIBS) $(LDFLAGS) gtk-x11-$(GTK_VER).dll : $(gtk_OBJECTS) gtk.def $(CC) $(CFLAGS) -LD -Fm -Fegtk-x11-$(GTK_VER).dll $(gtk_OBJECTS) ../gdk/gdk-x11-$(GTK_VER).lib $(GDK_PIXBUF_LIBS) $(PANGO_LIBS) $(INTL_LIBS) $(GLIB_LIBS) gdi32.lib user32.lib advapi32.lib $(LDFLAGS) /def:gtk.def # General rule for compiling the objects into the DLL .c.obj : $(CC) $(CFLAGS) -GD -c -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" $< $(EXAMPLE).obj : ..\examples\$(EXAMPLE)\$(EXAMPLE).c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"$(EXAMPLE)\" ..\examples\$(EXAMPLE)\$(EXAMPLE).c $(EXAMPLE).exe : $(EXAMPLE).obj $(CC) $(CFLAGS) $(EXAMPLE).obj $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)