## 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 ################################################################ # Not the real version but the one used in the DLL names GTK_VER = 3.0 GDK_LIBS = ../gdk/gdk-win32-$(GTK_VER).lib GTK_LIBS = gtk-win32-$(GTK_VER).lib GTK_BINARY_VERSION = @GTK_BINARY_VERSION@ # 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 $(GDK_PIXBUF_CFLAGS) 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 = \ -DHAVE_CONFIG_H \ $(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 \ -DGTK_PRINT_BACKENDS=\"file,lpr\" \ -DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED \ -DGTK_PRINT_PREVIEW_COMMAND="\"evince --unlink-tempfile --preview %f\"" \ -DGTK_LIBDIR=\"/magic/path/replaced/at/runtime\" EXTRALIBS = \ $(GDK_LIBS) \ $(GDK_PIXBUF_LIBS) \ $(PANGO_LIBS) $(INTL_LIBS) \ $(GLIB_LIBS) $(GMODULE_LIBS) $(GIO_LIBS) \ $(CAIRO_LIBS) $(PANGOCAIRO_LIBS) $(CAIRO_GOBJECT_LIBS) \ TOUCH = copy makefile.msc+nul gtkbuiltincache.h: gtk-update-icon-cache.exe del gtkicontheme.obj gtk-update-icon-cache --force --ignore-theme-index \ --source builtin_icons stock-icons > gtkbuiltincache.h GENERATED = \ gtktypebuiltins.h gtktypebuiltins.c \ gtkmarshalers.h gtkmarshalers.c \ gtk.def gtktypefuncs.inc all : \ ..\config.h \ $(GENERATED) \ gtk-update-icon-cache.exe \ gtkbuiltincache.h \ 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_cell = \ gtkcellarea.obj \ gtkcellareabox.obj \ gtkcellareaboxcontext.obj \ gtkcellareacontext.obj \ gtkcelleditable.obj \ gtkcelllayout.obj \ gtkcellrenderer.obj \ gtkcellrendereraccel.obj \ gtkcellrenderercombo.obj \ gtkcellrendererpixbuf.obj \ gtkcellrendererprogress.obj \ gtkcellrendererspin.obj \ gtkcellrendererspinner.obj \ gtkcellrenderertext.obj \ gtkcellrenderertoggle.obj \ gtkcellview.obj \ gtkliststore.obj \ gtktreednd.obj \ gtktreemenu.obj \ gtktreemodel.obj \ gtktreemodelfilter.obj \ gtktreemodelsort.obj \ gtktreeselection.obj \ gtktreesortable.obj \ gtktreestore.obj \ gtktreeview.obj \ gtktreeviewcolumn.obj \ gtk_OBJECTS_file = \ gtkfilechooser.obj \ gtkfilechooserbutton.obj \ gtkfilechooserdefault.obj \ gtkfilechooserdialog.obj \ gtkfilechooserembed.obj \ gtkfilechooserentry.obj \ # gtkfilechoosersettings.obj \ gtkfilechooserutils.obj \ gtkfilechooserwidget.obj \ gtkfilefilter.obj \ gtkfilesystem.obj \ gtkfilesystemmodel.obj \ gtk_OBJECTS_print = \ gtkprint-win32.obj \ gtkprintcontext.obj \ gtkprintoperation-win32.obj \ gtkprintoperation.obj \ gtkprintoperationpreview.obj \ gtkprintsettings.obj \ gtkprintutils.obj \ gtk_OBJECTS_text = \ gtktextattributes.obj \ gtktextbtree.obj \ gtktextbuffer.obj \ gtktextbufferrichtext.obj \ gtktextbufferserialize.obj \ gtktextchild.obj \ gtktextdisplay.obj \ gtktextiter.obj \ gtktextlayout.obj \ gtktextmark.obj \ gtktextsegment.obj \ gtktexttag.obj \ gtktexttagtable.obj \ gtktexttypes.obj \ gtktextutil.obj \ gtktextview.obj \ gtk_OBJECTS_recent = \ gtkrecentaction.obj \ gtkrecentchooserdefault.obj \ gtkrecentchooserdialog.obj \ gtkrecentchoosermenu.obj \ gtkrecentchooserwidget.obj \ gtkrecentchooserutils.obj \ gtkrecentchooser.obj \ gtkrecentfilter.obj \ gtkrecentmanager.obj \ gtk_OBJECTS = \ fnmatch.obj \ gtk9slice.obj \ gtkaboutdialog.obj \ gtkaccelgroup.obj \ gtkaccellabel.obj \ gtkaccelmap.obj \ gtkaccessible.obj \ gtkaction.obj \ gtkactiongroup.obj \ gtkactivatable.obj \ gtkadjustment.obj \ gtkalignment.obj \ gtkanimationdescription.obj \ gtkappchooser.obj \ gtkappchooserbutton.obj \ gtkappchooserdialog.obj \ gtkappchoosermodule.obj \ gtkappchooseronline.obj \ gtkappchooseronlinepk.obj \ gtkappchooserwidget.obj \ gtkapplication.obj \ gtkarrow.obj \ gtkaspectframe.obj \ gtkassistant.obj \ gtkbin.obj \ gtkbindings.obj \ gtkbbox.obj \ gtkbox.obj \ gtkborder.obj \ gtkbuildable.obj \ gtkbuilder.obj \ gtkbuilderparser.obj \ gtkbutton.obj \ gtkcalendar.obj \ gtkcheckbutton.obj \ gtkcheckmenuitem.obj \ gtkclipboard.obj \ gtkcolorbutton.obj \ gtkcolorsel.obj \ gtkcolorseldialog.obj \ gtkcombobox.obj \ gtkcomboboxtext.obj \ gtkcontainer.obj \ gtkcssprovider.obj \ gtkdialog.obj \ gtkdnd.obj \ gtkdrawingarea.obj \ gtkeditable.obj \ gtkentry.obj \ gtkentrybuffer.obj \ gtkentrycompletion.obj \ gtkeventbox.obj \ gtkexpander.obj \ gtkfixed.obj \ gtkfontsel.obj \ gtkfontbutton.obj \ gtkframe.obj \ gtkgradient.obj \ gtkgrid.obj \ gtkhandlebox.obj \ gtkhbbox.obj \ gtkhbox.obj \ gtkhpaned.obj \ gtkhscale.obj \ gtkhscrollbar.obj \ gtkhseparator.obj \ gtkhsv.obj \ gtkiconcache.obj \ gtkiconcachevalidator.obj \ gtkiconfactory.obj \ gtkicontheme.obj \ gtkiconview.obj \ gtkimage.obj \ gtkimagemenuitem.obj \ gtkimcontext.obj \ gtkimcontextsimple.obj \ gtkimmodule.obj \ gtkimmulticontext.obj \ gtkinfobar.obj \ gtkinvisible.obj \ gtkkeyhash.obj \ gtklabel.obj \ gtklayout.obj \ gtklinkbutton.obj \ gtkmain.obj \ gtkmarshalers.obj \ gtkmenu.obj \ gtkmenubar.obj \ gtkmenuitem.obj \ gtkmenushell.obj \ gtkmenutoolbutton.obj \ gtkmessagedialog.obj \ gtkmisc.obj \ gtkmnemonichash.obj \ gtkmodifierstyle.obj \ gtkmodules.obj \ gtkmountoperation.obj \ gtkmountoperation-stub.obj \ gtknotebook.obj \ gtkorientable.obj \ gtkpagesetup.obj \ gtkpaned.obj \ gtkpango.obj \ gtkpapersize.obj \ gtkpathbar.obj \ gtkprogressbar.obj \ gtkquery.obj \ gtkradioaction.obj \ gtkradiobutton.obj \ gtkradiotoolbutton.obj \ gtkradiomenuitem.obj \ gtkrange.obj \ gtkrbtree.obj \ gtkrc.obj \ gtkscale.obj \ gtkscalebutton.obj \ gtkscrollable.obj \ gtkscrollbar.obj \ gtkscrolledwindow.obj \ gtksearchengine.obj \ gtksearchenginebeagle.obj \ gtksearchenginesimple.obj \ gtksearchenginetracker.obj \ gtkselection.obj \ gtkseparator.obj \ gtkseparatormenuitem.obj \ gtkseparatortoolitem.obj \ gtksettings.obj \ gtkshow.obj \ gtkstacksidebar.obj \ gtksizegroup.obj \ gtksizerequest.obj \ gtkspinbutton.obj \ gtkspinner.obj \ gtkstatusicon.obj \ gtkstyle.obj \ gtkstylecontext.obj \ gtkstyleproperties.obj \ gtkstyleprovider.obj \ gtkstatusbar.obj \ gtkstock.obj \ gtkswitch.obj \ gtksymboliccolor.obj \ gtktable.obj \ gtktearoffmenuitem.obj \ gtktestutils.obj \ gtkthemingengine.obj \ gtktimeline.obj \ gtktoggleaction.obj \ gtktogglebutton.obj \ gtktoggletoolbutton.obj \ gtktoolbar.obj \ gtktoolbutton.obj \ gtktoolitem.obj \ gtktoolitemgroup.obj \ gtktoolpalette.obj \ gtktoolshell.obj \ gtktooltip.obj \ gtktreedatalist.obj \ gtktypebuiltins.obj \ gtkuimanager.obj \ gtkvbbox.obj \ gtkvbox.obj \ gtkviewport.obj \ gtkvolumebutton.obj \ gtkvpaned.obj \ gtkvscale.obj \ gtkvscrollbar.obj \ gtkvseparator.obj \ gtkwidget.obj \ gtkwidgetpath.obj \ gtkwin32embed.obj \ gtkwin32embedwidget.obj \ gtkwindow.obj \ # gtkwrapbox.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 \ gtkactivatable.h \ gtkadjustment.h \ gtkalignment.h \ gtkappchooser.h \ gtkappchooserbutton.h \ gtkappchooserdialog.h \ gtkappchooserwidget.h \ gtkapplication.h \ gtkarrow.h \ gtkaspectframe.h \ gtkassistant.h \ gtkbbox.h \ gtkbin.h \ gtkbindings.h \ gtkborder.h \ gtkbox.h \ gtkbuilder.h \ gtkbuildable.h \ gtkbutton.h \ gtkcalendar.h \ gtkcellarea.h \ gtkcellareacontext.h \ gtkcellareabox.h \ gtkcelleditable.h \ gtkcelllayout.h \ gtkcellrenderer.h \ gtkcellrendereraccel.h \ gtkcellrenderercombo.h \ gtkcellrendererpixbuf.h \ gtkcellrendererprogress.h \ gtkcellrendererspin.h \ gtkcellrendererspinner.h\ gtkcellrenderertext.h \ gtkcellrenderertoggle.h \ gtkcellview.h \ gtkcheckbutton.h \ gtkcheckmenuitem.h \ gtkclipboard.h \ gtkcolorbutton.h \ gtkcolorsel.h \ gtkcolorseldialog.h \ gtkcombobox.h \ gtkcomboboxtext.h \ gtkcontainer.h \ gtkcssprovider.h \ gtkdebug.h \ gtkdialog.h \ gtkdnd.h \ gtkdrawingarea.h \ gtkeditable.h \ gtkentry.h \ gtkentrybuffer.h \ gtkentrycompletion.h \ gtkenums.h \ gtkeventbox.h \ gtkexpander.h \ gtkfilechooser.h \ gtkfilechooserbutton.h \ gtkfilechooserdialog.h \ gtkfilechooserwidget.h \ gtkfilefilter.h \ gtkfixed.h \ gtkfontbutton.h \ gtkfontsel.h \ gtkframe.h \ gtkgradient.h \ gtkgrid.h \ gtkhandlebox.h \ gtkhbbox.h \ gtkhbox.h \ gtkhpaned.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 \ gtkinfobar.h \ gtkinvisible.h \ gtklabel.h \ gtklayout.h \ gtklinkbutton.h \ gtkliststore.h \ gtkmain.h \ gtkmenu.h \ gtkmenubar.h \ gtkmenuitem.h \ gtkmenushell.h \ gtkmenutoolbutton.h \ gtkmessagedialog.h \ gtkmisc.h \ gtkmodules.h \ gtkmountoperation.h \ gtknotebook.h \ gtkorientable.h \ gtkpagesetup.h \ gtkpaned.h \ gtkpapersize.h \ gtkprintcontext.h \ gtkprintoperation.h \ gtkprintoperationpreview.h \ gtkprintsettings.h \ gtkprogressbar.h \ gtkradioaction.h \ gtkradiobutton.h \ gtkradiomenuitem.h \ gtkradiotoolbutton.h \ gtkrange.h \ gtkrc.h \ gtkrecentaction.h \ gtkrecentchooser.h \ gtkrecentchooserdialog.h \ gtkrecentchoosermenu.h \ gtkrecentchooserwidget.h \ gtkrecentfilter.h \ gtkrecentmanager.h \ gtkscale.h \ gtkscalebutton.h \ gtkscrollable.h \ gtkscrollbar.h \ gtkscrolledwindow.h \ gtkselection.h \ gtkseparator.h \ gtkseparatormenuitem.h \ gtkseparatortoolitem.h \ gtksettings.h \ gtkshow.h \ gtkstacksidebar.h \ gtksizegroup.h \ gtksizerequest.h \ gtkspinbutton.h \ gtkspinner.h \ gtkstatusbar.h \ gtkstatusicon.h \ gtkstock.h \ gtkstylecontext.h \ gtkstyleproperties.h \ gtkstyleprovider.h \ gtkstyle.h \ gtkswitch.h \ gtksymboliccolor.h \ gtktable.h \ gtktearoffmenuitem.h \ gtktestutils.h \ gtktextbuffer.h \ gtktextbufferrichtext.h \ gtktextchild.h \ gtktextdisplay.h \ gtktextiter.h \ gtktextmark.h \ gtktexttag.h \ gtktexttagtable.h \ gtktextview.h \ gtkthemingengine.h \ gtktoggleaction.h \ gtktogglebutton.h \ gtktoggletoolbutton.h \ gtktoolbar.h \ gtktoolbutton.h \ gtktoolitem.h \ gtktoolitemgroup.h \ gtktoolpalette.h \ gtktoolshell.h \ gtktooltip.h \ gtktreednd.h \ gtktreemodel.h \ gtktreemodelfilter.h \ gtktreemodelsort.h \ gtktreeselection.h \ gtktreesortable.h \ gtktreestore.h \ gtktreeview.h \ gtktreeviewcolumn.h \ gtkuimanager.h \ gtkvbbox.h \ gtkvbox.h \ gtkviewport.h \ gtkvolumebutton.h \ gtkvpaned.h \ gtkvscale.h \ gtkvscrollbar.h \ gtkvseparator.h \ gtkwidget.h \ gtkwidgetpath.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 gtk.def: gtk.symbols makefile.msc echo EXPORTS > gtk.def cl /EP -DG_OS_WIN32 -DGDK_WINDOWING_WIN32 \ -DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= \ -DG_GNUC_PRINTF=;G_GNUC_PRINTF gtk.symbols >> gtk.def # 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 makefile.msc $(GLIB)\gobject\glib-genmarshal --prefix=_gtk_marshal gtkmarshalers.list --header >gtkmarshalers.h gtkmarshalers.c : gtkmarshalers.list makefile.msc $(GLIB)\gobject\glib-genmarshal --prefix=_gtk_marshal gtkmarshalers.list --body >gtkmarshalers.c gtktypefuncs.inc : makefile.msc echo /*none*/ > gtktypefuncs.inc gtk-win32.res : gtk-win32.rc rc -DBUILDNUMBER=0 -r -fo gtk-win32.res gtk-win32.rc # build some static limits to covercome command line too long # may also speed up the build gtk-cell.lib : $(gtk_OBJECTS_cell) lib /out:gtk-cell.lib $(gtk_OBJECTS_cell) gtk-file.lib : $(gtk_OBJECTS_file) lib /out:gtk-file.lib $(gtk_OBJECTS_file) gtk-print.lib : $(gtk_OBJECTS_print) lib /out:gtk-print.lib $(gtk_OBJECTS_print) gtk-recent.lib : $(gtk_OBJECTS_recent) lib /out:gtk-recent.lib $(gtk_OBJECTS_recent) gtk-text.lib : $(gtk_OBJECTS_text) lib /out:gtk-text.lib $(gtk_OBJECTS_text) gtk-core.lib : $(gtk_OBJECTS) lib /out:gtk-core.lib $(gtk_OBJECTS) gtk_SUBLIBS = \ gtk-cell.lib \ gtk-file.lib \ gtk-print.lib \ gtk-recent.lib \ gtk-text.lib \ gtk-core.lib # # Linking: # libgtk-win32-$(GTK_VER)-0.dll : $(gtk_SUBLIBS) gtk.def gtk-win32.res $(CC) $(CFLAGS) -LD -Fm -Fe$@ $(gtk_SUBLIBS) gtk-win32.res $(EXTRALIBS) \ gdi32.lib user32.lib advapi32.lib wsock32.lib shell32.lib ole32.lib \ comdlg32.lib winspool.lib comctl32.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-update-icon-cache.exe : updateiconcache.obj $(CC) $(CFLAGS) -Fe$@ updateiconcache.obj $(GDK_PIXBUF_LIBS) $(GLIB_LIBS) $(INTL_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) -GF -Zm400 -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)