## Makefile for building the gtk DLL with Microsoft C ## Use: nmake -f makefile.msc # Change this to wherever you want to install the DLLs. This directory # should be in your PATH. BIN = C:\bin # This is the location of pthreads for Win32, # see http://sourceware.cygnus.com/pthreads-win32/ PTHREADS = ..\..\pthreads-snap-1999-05-30 PTHREAD_LIB = $(PTHREADS)\pthread.lib PTHREAD_INC = -I $(PTHREADS) ################################################################ # Nothing much configurable below !IFNDEF DEBUG # Full optimization: OPTIMIZE = -Ox -MD LINKDEBUG = !ELSE # Debugging: OPTIMIZE = -Zi -MDd LINKDEBUG = /debug !ENDIF # cl -? describes the options # Some files use near as an identifier CC = cl -G5 -GF $(OPTIMIZE) -W3 -DHAVE_CONFIG_H -nologo -Dnear=xxnear # 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 = awk LDFLAGS = /link /machine:ix86 $(LINKDEBUG) INSTALL = copy TOUCH = copy makefile.msc+nul GLIB_VER=1.3 GTK_VER=1.3 GDKSYSDEP = ..\gdk\win32 GLIB = ..\..\glib INTL = ..\..\intl CFLAGS = -I. -I.. -I$(GDKSYSDEP) -I$(GLIB) -I$(GLIB)\gmodule -I$(INTL) -DGTK_DISABLE_COMPAT_H all : \ ..\config.h \ gtkcompat.h \ generated \ gtk-$(GTK_VER).dll\ testdnd.exe \ testgtk.exe \ testinput.exe \ testrgb.exe \ testselection.exe \ simple.exe install : all $(INSTALL) gtk-$(GTK_VER).dll $(BIN) gtk_OBJECTS = \ fnmatch.obj \ gtkaccelgroup.obj \ gtkaccellabel.obj \ gtkadjustment.obj \ gtkalignment.obj \ gtkarg.obj \ gtkarrow.obj \ gtkaspectframe.obj \ gtkbbox.obj \ gtkbin.obj \ gtkbindings.obj \ gtkbox.obj \ gtkbutton.obj \ gtkcalendar.obj \ gtkcheckbutton.obj \ gtkcheckmenuitem.obj \ gtkclist.obj \ gtkcolorsel.obj \ gtkcombo.obj \ gtkcontainer.obj \ gtkctree.obj \ gtkcurve.obj \ gtkdata.obj \ gtkdialog.obj \ gtkdnd.obj \ gtkdrawingarea.obj \ gtkeditable.obj \ gtkentry.obj \ gtkeventbox.obj \ gtkfilesel.obj \ gtkfixed.obj \ gtkfontsel.obj \ gtkframe.obj \ gtkgamma.obj \ gtkgc.obj \ gtkhandlebox.obj \ gtkhbbox.obj \ gtkhbox.obj \ gtkhpaned.obj \ gtkhruler.obj \ gtkhscale.obj \ gtkhscrollbar.obj \ gtkhseparator.obj \ gtkimage.obj \ gtkinputdialog.obj \ gtkinvisible.obj \ gtkitem.obj \ gtkitemfactory.obj \ gtklabel.obj \ gtklayout.obj \ gtklist.obj \ gtklistitem.obj \ gtkmain.obj \ gtkmarshal.obj \ gtkmenu.obj \ gtkmenubar.obj \ gtkmenufactory.obj \ gtkmenuitem.obj \ gtkmenushell.obj \ gtkmisc.obj \ gtknotebook.obj \ gtkobject.obj \ gtkoptionmenu.obj \ gtkpacker.obj \ gtkpaned.obj \ gtkpixmap.obj \ gtkplug.obj \ gtkpreview.obj \ gtkprogress.obj \ gtkprogressbar.obj \ gtkradiobutton.obj \ gtkradiomenuitem.obj \ gtkrange.obj \ gtkrc.obj \ gtkruler.obj \ gtkscale.obj \ gtkscrollbar.obj \ gtkscrolledwindow.obj \ gtkselection.obj \ gtkseparator.obj \ gtksignal.obj \ gtksocket.obj \ gtkspinbutton.obj \ gtkstatusbar.obj \ gtkstyle.obj \ gtktable.obj \ gtktearoffmenuitem.obj \ gtktext.obj \ gtkthemes.obj \ gtktipsquery.obj \ gtktogglebutton.obj \ gtktoolbar.obj \ gtktooltips.obj \ gtktree.obj \ gtktreeitem.obj \ gtktypeutils.obj\ gtkvbbox.obj \ gtkvbox.obj \ gtkviewport.obj \ gtkvpaned.obj \ gtkvruler.obj \ gtkvscale.obj \ gtkvscrollbar.obj \ gtkvseparator.obj \ gtkwidget.obj \ gtkwindow.obj # Source headers which are non-autogenerated headers source_headers = \ gtk.h \ gtkaccelgroup.h \ gtkaccellabel.h \ gtkadjustment.h \ gtkalignment.h \ gtkarg.h \ gtkarrow.h \ gtkaspectframe.h \ gtkbin.h \ gtkbindings.h \ gtkbbox.h \ gtkbox.h \ gtkbutton.h \ gtkcalendar.h \ gtkcheckbutton.h \ gtkcheckmenuitem.h \ gtkclist.h \ gtkcolorsel.h \ gtkcombo.h \ gtkcompat.h \ gtkcontainer.h \ gtkctree.h \ gtkcurve.h \ gtkdata.h \ gtkdebug.h \ gtkdialog.h \ gtkdnd.h \ gtkdrawingarea.h \ gtkeditable.h \ gtkentry.h \ gtkenums.h \ gtkeventbox.h \ gtkfilesel.h \ gtkfixed.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 \ gtkimage.h \ gtkinputdialog.h \ gtkintl.h \ gtkinvisible.h \ gtkitem.h \ gtkitemfactory.h \ gtklabel.h \ gtklayout.h \ gtklist.h \ gtklistitem.h \ gtkmain.h \ gtkmenu.h \ gtkmenubar.h \ gtkmenufactory.h \ gtkmenuitem.h \ gtkmenushell.h \ gtkmisc.h \ gtknotebook.h \ gtkobject.h \ gtkoptionmenu.h \ gtkpacker.h \ gtkpaned.h \ gtkpixmap.h \ gtkplug.h \ gtkpreview.h \ gtkprivate.h \ gtkprogress.h \ gtkprogressbar.h \ gtkradiobutton.h \ gtkradiomenuitem.h \ gtkrange.h \ gtkrc.h \ gtkruler.h \ gtkscale.h \ gtkscrollbar.h \ gtkscrolledwindow.h \ gtkselection.h \ gtkseparator.h \ gtksignal.h \ gtksocket.h \ gtkspinbutton.h \ gtkstyle.h \ gtkstatusbar.h \ gtktable.h \ gtktearoffmenuitem.h \ gtktext.h \ gtkthemes.h \ gtktipsquery.h \ gtktogglebutton.h \ gtktoolbar.h \ gtktooltips.h \ gtktree.h \ gtktreeitem.h \ gtktypeutils.h \ gtkvbbox.h \ gtkvbox.h \ gtkviewport.h \ gtkvpaned.h \ gtkvruler.h \ gtkvscale.h \ gtkvscrollbar.h \ gtkvseparator.h \ gtkwidget.h \ gtkwindow.h # More headers to use when autogenerating. gdk_headers = \ ..\gdk\gdktypes.h \ ..\gdk\gdkrgb.h ..\config.h : ..\config.h.win32 copy ..\config.h.win32 ..\config.h gtkcompat.h : gtkcompat.h.win32 copy gtkcompat.h.win32 gtkcompat.h # # Generated source files: # generated : gtk.defs gtktypebuiltins.h gtktypebuiltins_vars.c gtktypebuiltins_ids.c gtktypebuiltins_evals.c gtkmarshal.h gtkmarshal.c $(TOUCH) generated gtk.defs : makeenums.pl gtk-boxed.defs $(source_headers) $(gdk_headers) $(PERL) makeenums.pl defs $(source_headers) $(gdk_headers) >gd.tmp copy gd.tmp+gtk-boxed.defs gtk.defs @erase gd.tmp # generate type identifier header (GTK_TYPE_WIDGET_FLAGS) gtktypebuiltins.h: gtk.defs maketypes.awk $(AWK) -f maketypes.awk gtk.defs macros >gtktypebuiltins.h # generate type identifier variables (GTK_TYPE_WIDGET_FLAGS) gtktypebuiltins_vars.c: gtk.defs maketypes.awk $(AWK) -f maketypes.awk gtk.defs variables >gtktypebuiltins_vars.c # generate type entries for type-id registration gtktypebuiltins_ids.c: gtk.defs maketypes.awk $(AWK) -f maketypes.awk gtk.defs entries >gtktypebuiltins_ids.c # generate enum value arrays gtktypebuiltins_evals.c: makeenums.pl gtk.defs $(PERL) makeenums.pl arrays $(source_headers) $(gdk_headers) >gtktypebuiltins_evals.c gtkmarshal.h gtkmarshal.c : gtkmarshal.list genmarshal.pl $(PERL) genmarshal.pl del gtkmarshal.c rename s-gmc gtkmarshal.c del gtkmarshal.h rename s-gmh gtkmarshal.h # # Linking: # gtk-$(GTK_VER).dll : $(gtk_OBJECTS) gtk.def $(CC) $(CFLAGS) -LD -Fegtk-$(GTK_VER).dll $(gtk_OBJECTS) $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(INTL)\gnu-intl.lib $(GLIB)\glib-$(GLIB_VER).lib $(GLIB)\gmodule-$(GLIB_VER).lib gdi32.lib user32.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\" $< # # Test programs: # testdnd.exe : gtk-$(GTK_VER).dll testdnd.obj $(CC) $(CFLAGS) testdnd.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS) # Must have separate rules for these objects that don't go in the DLL testdnd.obj : testdnd.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testdnd\" testdnd.c testgtk.exe : gtk-$(GTK_VER).dll testgtk.obj $(CC) $(CFLAGS) testgtk.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS) testgtk.obj : testgtk.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testgtk\" testgtk.c testinput.exe : gtk-$(GTK_VER).dll testinput.obj $(CC) $(CFLAGS) testinput.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS) testinput.obj : testinput.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testinput\" testinput.c testrgb.exe : gtk-$(GTK_VER).dll testrgb.obj $(CC) $(CFLAGS) testrgb.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS) testrgb.obj : testrgb.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testrgb\" testrgb.c testselection.exe : gtk-$(GTK_VER).dll testselection.obj $(CC) $(CFLAGS) testselection.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS) testselection.obj : testselection.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testselection\" testselection.c testthreads.exe : gtk-$(GTK_VER).dll testthreads.obj $(CC) $(CFLAGS) testthreads.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(GLIB)\gthread-$(GLIB_VER).lib $(PTHREAD_LIB) $(LDFLAGS) testthreads.obj : testthreads.c $(CC) $(CFLAGS) $(PTHREAD_INC) -c -DG_LOG_DOMAIN=\"testthreads\" -DUSE_PTHREADS=1 testthreads.c simple.exe : gtk-$(GTK_VER).dll simple.obj $(CC) $(CFLAGS) simple.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS) simple.obj : simple.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"simple\" simple.c # The clean target doesn't remove the generated sources clean: del *.exe del *.obj del *.dll del *.lib del *.exp del *.err del *.map del *.sym del *.lk1 del *.mk1 del *.pdb del *.ilk