forked from AuroraMiddleware/gtk
1f149b3a8d
2000-05-02 Tor Lillqvist <tml@iki.fi> Large changes to the Win32 backend, partially made necessary by the changes to the backend-independent internal structures. Attempts to implement similar backing store stuff as on X11. The current (CVS) version of the Win32 backend is *not* as stable as it was before the no-flicker branch was merged. A zipfile with that version is available from http://www.gimp.org/win32/. That should be use by "production" code until this CVS version is usable. (But note, the Win32 backend has never been claimed to be "production quality".) * README.win32: Add the above comment about versions. * gdk/gdkwindow.c: Don't use backing store for now on Win32. * gdk/gdk.def: Update. * gdk/gdkfont.h: Declare temporary Win32-only functions. Will presumably be replaced by some more better mechanism as 1.4 gets closer to release shape. * gdk/makefile.{cygwin,msc}: Update. * gdk/win32/*.c: Correct inclusions of the backend-specific and internal headers. Change code according to changes in these. Use gdk_drawable_*, not gdk_window_* where necessary. * gdk/win32/gdkdnd-win32.c: Use MISC selector for GDK_NOTE, not our old DND. * gdk/win32/gdkdrawable-win32.c (gdk_win32_draw_text): Don't try to interpret single characters as UTF-8. Thanks to Hans Breuer. Use correct function name in warning messages. * gdk/win32/gdkevents-win32.c: Use correct parameter lists for the GSourceFuncs gdk_event_prepare and gdk_event_check. (gdk_event_get_graphics_expose): Do implement, use PeekMessage. Thanks to Hans Breuer. (event_mask_string): Debugging function to print an GdkEventMask. (gdk_pointer_grab): Use it. * gdk/win32/gdkfont-win32.c: The Unicode subrange that the (old) book I used claimed was Hangul actually is CJK Unified Ideographs Extension A. Also, Hangul Syllables were missing. Improve logging. * gdk/win32/gdkgc-win32.c: Largish changes. * gdk/win32/gdkim-win32.c (gdk_set_locale): Use g_win32_getlocale() from GLib, and not setlocale() to get current locale name. * gdk/win32/gdkprivate-win32.h * gdk/win32/gdkwin32.h: Move stuff from gdkprivate-win32.h to gdkwin32.h, similarily as in the X11 backend. * gdk/win32/gdkwindow-win32.c (gdk_propagate_shapes): Bugfix, assignment was used instead of equals in if test. Thanks to Hans Breuer. * gdk/win32/makefile.{cygwin,msc} * gtk/makefile.{cygwin,msc}: Updates. Better kludge to get the path to the Win32 headers that works also with the mingw compiler. * gtk/gtkstyle.c: Include <string.h>.
413 lines
9.6 KiB
Plaintext
413 lines
9.6 KiB
Plaintext
## 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
|
|
|
|
################################################################
|
|
|
|
# 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 <winver.h>" | $(CC) -M -E - | tail -1 | sed -e 's![\\/]winver.h!!' | tr -d '\015')
|
|
|
|
gtk-win32res.o : gtk.rc gtk-build.tmp
|
|
m4 -DBUILDNUMBER=`cat gtk-build.tmp` <gtk.rc >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.stamp >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
|