## Makefile for building the GTK DLL with gcc-2.95 or later on cygwin ## Use: make -f makefile.cygwin ## There is no install target, you have to decide where and ## how to install for yourself. # This is the location of pthreads for Win32, # see http://sourceware.cygnus.com/pthreads-win32/ PTHREADS = ../../pthreads-snap-1999-05-30 PTHREAD_LIB = -L $(PTHREADS) -lpthread PTHREAD_INC = -I $(PTHREADS) OPTIMIZE = -g -O ################################################################ # Nothing much configurable below CC = gcc -mno-cygwin -mpentium -fnative-struct # 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 GLIB_VER=1.3 GTK_VER=1.3 GLIB = ../../glib INTL = ../../intl CFLAGS = $(OPTIMIZE) -I . -I .. -I ../gdk -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 gtk_OBJECTS = \ fnmatch.o \ gtkaccelgroup.o \ gtkaccellabel.o \ gtkadjustment.o \ gtkalignment.o \ gtkarg.o \ gtkarrow.o \ gtkaspectframe.o\ gtkbbox.o \ gtkbin.o \ gtkbindings.o \ gtkbox.o \ gtkbutton.o \ gtkcalendar.o \ gtkcheckbutton.o\ gtkcheckmenuitem.o\ gtkclist.o \ gtkcolorsel.o \ gtkcombo.o \ gtkcontainer.o \ gtkctree.o \ gtkcurve.o \ gtkdata.o \ gtkdialog.o \ gtkdnd.o \ gtkdrawingarea.o\ gtkeditable.o \ gtkentry.o \ gtkeventbox.o \ gtkfilesel.o \ gtkfixed.o \ gtkfontsel.o \ gtkframe.o \ gtkgamma.o \ gtkgc.o \ gtkhandlebox.o \ gtkhbbox.o \ gtkhbox.o \ gtkhpaned.o \ gtkhruler.o \ gtkhscale.o \ gtkhscrollbar.o \ gtkhseparator.o \ gtkimage.o \ gtkinputdialog.o\ gtkinvisible.o \ gtkitem.o \ gtkitemfactory.o\ gtklabel.o \ gtklayout.o \ gtklist.o \ gtklistitem.o \ gtkmain.o \ gtkmarshal.o \ gtkmenu.o \ gtkmenubar.o \ gtkmenufactory.o\ gtkmenuitem.o \ gtkmenushell.o \ gtkmisc.o \ gtknotebook.o \ gtkobject.o \ gtkoptionmenu.o \ gtkpacker.o \ gtkpaned.o \ gtkpixmap.o \ gtkplug.o \ gtkpreview.o \ gtkprogress.o \ gtkprogressbar.o\ gtkradiobutton.o\ gtkradiomenuitem.o\ gtkrange.o \ gtkrc.o \ gtkruler.o \ gtkscale.o \ gtkscrollbar.o \ gtkscrolledwindow.o\ gtkselection.o \ gtkseparator.o \ gtksignal.o \ gtksocket.o \ gtkspinbutton.o \ gtkstatusbar.o \ gtkstyle.o \ gtktable.o \ gtktearoffmenuitem.o\ gtktext.o \ gtkthemes.o \ gtktipsquery.o \ gtktogglebutton.o\ gtktoolbar.o \ gtktooltips.o \ gtktree.o \ gtktreeitem.o \ gtktypeutils.o \ gtkvbbox.o \ gtkvbox.o \ gtkviewport.o \ gtkvpaned.o \ gtkvruler.o \ gtkvscale.o \ gtkvscrollbar.o \ gtkvseparator.o \ gtkwidget.o \ gtkwindow.o # 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 \ 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 \ 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/gdkcc.h \ ../gdk/gdkcolor.h \ ../gdk/gdkcursor.h \ ../gdk/gdkdnd.h \ ../gdk/gdkdrawable.h \ ../gdk/gdkevents.h \ ../gdk/gdkfont.h \ ../gdk/gdkgc.h \ ../gdk/gdkim.h \ ../gdk/gdkimage.h \ ../gdk/gdkinput.h \ ../gdk/gdkpixmap.h \ ../gdk/gdkproperty.h \ ../gdk/gdkregion.h \ ../gdk/gdkrgb.h \ ../gdk/gdkselection.h \ ../gdk/gdktypes.h \ ../gdk/gdkvisual.h \ ../gdk/gdkwindow.h ../config.h : ../config.h.win32 cp ../config.h.win32 ../config.h gtkcompat.h : gtkcompat.h.win32 cp 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 gtk.defs : makeenums.pl gtk-boxed.defs $(source_headers) $(gdk_headers) $(PERL) makeenums.pl defs $(source_headers) $(gdk_headers) >gd.tmp cat gd.tmp gtk-boxed.defs >gtk.defs rm 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 gtkmarshal.list s-gmh s-gmc -rm gtkmarshal.c mv s-gmc gtkmarshal.c -rm gtkmarshal.h mv s-gmh gtkmarshal.h # # Linking: # gtk-$(GTK_VER).dll : generated $(gtk_OBJECTS) gtk.def gtk-win32res.o $(GLIB)/build-dll gtk $(GTK_VER) gtk.def $(gtk_OBJECTS) gtk-win32res.o -L ../gdk -lgdk-$(GTK_VER) -L$(INTL) -lgnu-intl -L $(GLIB) -lglib-$(GLIB_VER) -lgmodule-$(GLIB_VER) -lgdi32 -luser32 .SUFFIXES: .c .o .i # Kludge to get the path to the win32 headers WIN32APIHEADERS = $(shell echo "\#include " | $(CC) -M -E - | tail -1 | sed -e 's!/winver.h!!') gtk-win32res.o : gtk.rc gtk-build.tmp m4 -DBUILDNUMBER=`cat gtk-build.tmp` gtk-win32res.rc windres --include-dir $(WIN32APIHEADERS) gtk-win32res.rc gtk-win32res.o rm gtk-build.tmp gtk-win32res.rc # The *.stamp files aren't distributed. Thus, this takes care of only # tml building libraries with nonzero build number. ifeq ($(wildcard gtk-build.stamp),gtk-build.stamp) # Magic to bump the build number gtk-build.tmp : bash -c "read number && echo $$[number+1]" gtk-build.tmp cp gtk-build.tmp gtk-build.stamp else # Use zero as build number. gtk-build.tmp : echo 0 >gtk-build.tmp endif # General rule for compiling the objects into the DLL .c.o : $(CC) $(CFLAGS) -c -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" $< .c.i : $(CC) $(CFLAGS) -E -DGDK_COMPILATION -DG_LOG_DOMAIN=\"Gdk\" $< >$@ # # Test programs: # testdnd.exe : testdnd.o $(CC) $(CFLAGS) -o $@ testdnd.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS) # Must have separate rules for these objects that don't go in the DLL testdnd.o : testdnd.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testdnd\" testdnd.c testgtk.exe : testgtk.o $(CC) $(CFLAGS) -o $@ testgtk.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS) testgtk.o : testgtk.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testgtk\" testgtk.c testinput.exe : testinput.o $(CC) $(CFLAGS) -o $@ testinput.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS) testinput.o : testinput.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testinput\" testinput.c testrgb.exe : testrgb.o $(CC) $(CFLAGS) -o $@ testrgb.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS) testrgb.o : testrgb.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testrgb\" testrgb.c testselection.exe : testselection.o $(CC) $(CFLAGS) -o $@ testselection.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS) testselection.o : testselection.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testselection\" testselection.c testthreads.exe : testthreads.o $(CC) $(CFLAGS) -o $@ testthreads.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) -lgthread-$(GLIB_VER) $(PTHREAD_LIB) $(LDFLAGS) testthreads.o : testthreads.c $(CC) $(CFLAGS) -I$(PTHREAD_INC) -c -DG_LOG_DOMAIN=\"testthreads\" -DUSE_PTHREADS=1 testthreads.c simple.exe : simple.o $(CC) $(CFLAGS) -o $@ simple.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS) simple.o : simple.c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"simple\" simple.c # The clean target doesn't remove the generated sources clean: -rm *.exe *.o *.dll *.a *.exp *.base