]> Pileus Git - ~andy/gtk/blob - gtk/makefile.cygwin
Add an extra parameter so that we don't have to do unnecessary settings to
[~andy/gtk] / gtk / makefile.cygwin
1 ## Makefile for building the GTK DLL with gcc-2.95 or later on cygwin
2 ## Use: make -f makefile.cygwin
3
4 ## There is no install target, you have to decide where and 
5 ## how to install for yourself.
6
7 # This is the location of pthreads for Win32, 
8 # see http://sourceware.cygnus.com/pthreads-win32/
9 PTHREADS = ../../pthreads-snap-1999-05-30
10 PTHREAD_LIB = -L $(PTHREADS) -lpthread
11 PTHREAD_INC = -I $(PTHREADS)
12
13 OPTIMIZE = -g -O
14
15 ################################################################
16
17 # Nothing much configurable below
18
19 CC = gcc -mno-cygwin -mpentium -fnative-struct
20
21 # Perl and awk are needed to generate some source files.
22 # These generated source files are distribuyted with the Win32 GTk+ source
23 # distributions, so don't worry if you don't have perl and awk.
24 PERL = perl
25 AWK = awk
26
27 GLIB_VER=1.3
28 GTK_VER=1.3
29
30 GLIB = ../../glib
31 INTL = ../../intl
32
33 CFLAGS = $(OPTIMIZE) -I . -I .. -I ../gdk -I $(GLIB) -I $(GLIB)/gmodule -I $(INTL) -DGTK_DISABLE_COMPAT_H
34
35 all : \
36         ../config.h     \
37         gtkcompat.h     \
38         generated       \
39         gtk-$(GTK_VER).dll\
40         testdnd.exe     \
41         testgtk.exe     \
42         testinput.exe   \
43         testrgb.exe     \
44         testselection.exe \
45         simple.exe
46
47 gtk_OBJECTS = \
48         fnmatch.o       \
49         gtkaccelgroup.o \
50         gtkaccellabel.o \
51         gtkadjustment.o \
52         gtkalignment.o  \
53         gtkarg.o        \
54         gtkarrow.o      \
55         gtkaspectframe.o\
56         gtkbbox.o       \
57         gtkbin.o        \
58         gtkbindings.o   \
59         gtkbox.o        \
60         gtkbutton.o     \
61         gtkcalendar.o   \
62         gtkcheckbutton.o\
63         gtkcheckmenuitem.o\
64         gtkclist.o      \
65         gtkcolorsel.o   \
66         gtkcombo.o      \
67         gtkcontainer.o  \
68         gtkctree.o      \
69         gtkcurve.o      \
70         gtkdata.o       \
71         gtkdialog.o     \
72         gtkdnd.o        \
73         gtkdrawingarea.o\
74         gtkeditable.o   \
75         gtkentry.o      \
76         gtkeventbox.o   \
77         gtkfilesel.o    \
78         gtkfixed.o      \
79         gtkfontsel.o    \
80         gtkframe.o      \
81         gtkgamma.o      \
82         gtkgc.o         \
83         gtkhandlebox.o  \
84         gtkhbbox.o      \
85         gtkhbox.o       \
86         gtkhpaned.o     \
87         gtkhruler.o     \
88         gtkhscale.o     \
89         gtkhscrollbar.o \
90         gtkhseparator.o \
91         gtkimage.o      \
92         gtkinputdialog.o\
93         gtkinvisible.o  \
94         gtkitem.o       \
95         gtkitemfactory.o\
96         gtklabel.o      \
97         gtklayout.o     \
98         gtklist.o       \
99         gtklistitem.o   \
100         gtkmain.o       \
101         gtkmarshal.o    \
102         gtkmenu.o       \
103         gtkmenubar.o    \
104         gtkmenufactory.o\
105         gtkmenuitem.o   \
106         gtkmenushell.o  \
107         gtkmisc.o       \
108         gtknotebook.o   \
109         gtkobject.o     \
110         gtkoptionmenu.o \
111         gtkpacker.o     \
112         gtkpaned.o      \
113         gtkpixmap.o     \
114         gtkplug.o       \
115         gtkpreview.o    \
116         gtkprogress.o   \
117         gtkprogressbar.o\
118         gtkradiobutton.o\
119         gtkradiomenuitem.o\
120         gtkrange.o      \
121         gtkrc.o         \
122         gtkruler.o      \
123         gtkscale.o      \
124         gtkscrollbar.o  \
125         gtkscrolledwindow.o\
126         gtkselection.o  \
127         gtkseparator.o  \
128         gtksignal.o     \
129         gtksocket.o     \
130         gtkspinbutton.o \
131         gtkstatusbar.o  \
132         gtkstyle.o      \
133         gtktable.o      \
134         gtktearoffmenuitem.o\
135         gtktext.o       \
136         gtkthemes.o     \
137         gtktipsquery.o  \
138         gtktogglebutton.o\
139         gtktoolbar.o    \
140         gtktooltips.o   \
141         gtktree.o       \
142         gtktreeitem.o   \
143         gtktypeutils.o  \
144         gtkvbbox.o      \
145         gtkvbox.o       \
146         gtkviewport.o   \
147         gtkvpaned.o     \
148         gtkvruler.o     \
149         gtkvscale.o     \
150         gtkvscrollbar.o \
151         gtkvseparator.o \
152         gtkwidget.o     \
153         gtkwindow.o
154
155 # Source headers which are non-autogenerated headers
156 source_headers = \
157         gtk.h                   \
158         gtkaccelgroup.h         \
159         gtkaccellabel.h         \
160         gtkadjustment.h         \
161         gtkalignment.h          \
162         gtkarg.h                \
163         gtkarrow.h              \
164         gtkaspectframe.h        \
165         gtkbin.h                \
166         gtkbindings.h           \
167         gtkbbox.h               \
168         gtkbox.h                \
169         gtkbutton.h             \
170         gtkcalendar.h           \
171         gtkcheckbutton.h        \
172         gtkcheckmenuitem.h      \
173         gtkclist.h              \
174         gtkcolorsel.h           \
175         gtkcombo.h              \
176         gtkcontainer.h          \
177         gtkctree.h              \
178         gtkcurve.h              \
179         gtkdata.h               \
180         gtkdebug.h              \
181         gtkdialog.h             \
182         gtkdnd.h                \
183         gtkdrawingarea.h        \
184         gtkeditable.h           \
185         gtkentry.h              \
186         gtkenums.h              \
187         gtkeventbox.h           \
188         gtkfilesel.h            \
189         gtkfixed.h              \
190         gtkfontsel.h            \
191         gtkframe.h              \
192         gtkgamma.h              \
193         gtkgc.h                 \
194         gtkhandlebox.h          \
195         gtkhbbox.h              \
196         gtkhbox.h               \
197         gtkhpaned.h             \
198         gtkhruler.h             \
199         gtkhscale.h             \
200         gtkhscrollbar.h         \
201         gtkhseparator.h         \
202         gtkimage.h              \
203         gtkinputdialog.h        \
204         gtkinvisible.h          \
205         gtkitem.h               \
206         gtkitemfactory.h        \
207         gtklabel.h              \
208         gtklayout.h             \
209         gtklist.h               \
210         gtklistitem.h           \
211         gtkmain.h               \
212         gtkmenu.h               \
213         gtkmenubar.h            \
214         gtkmenufactory.h        \
215         gtkmenuitem.h           \
216         gtkmenushell.h          \
217         gtkmisc.h               \
218         gtknotebook.h           \
219         gtkobject.h             \
220         gtkoptionmenu.h         \
221         gtkpacker.h             \
222         gtkpaned.h              \
223         gtkpixmap.h             \
224         gtkplug.h               \
225         gtkpreview.h            \
226         gtkprivate.h            \
227         gtkprogress.h           \
228         gtkprogressbar.h        \
229         gtkradiobutton.h        \
230         gtkradiomenuitem.h      \
231         gtkrange.h              \
232         gtkrc.h                 \
233         gtkruler.h              \
234         gtkscale.h              \
235         gtkscrollbar.h          \
236         gtkscrolledwindow.h     \
237         gtkselection.h          \
238         gtkseparator.h          \
239         gtksignal.h             \
240         gtksocket.h             \
241         gtkspinbutton.h         \
242         gtkstyle.h              \
243         gtkstatusbar.h          \
244         gtktable.h              \
245         gtktearoffmenuitem.h    \
246         gtktext.h               \
247         gtkthemes.h             \
248         gtktipsquery.h          \
249         gtktogglebutton.h       \
250         gtktoolbar.h            \
251         gtktooltips.h           \
252         gtktree.h               \
253         gtktreeitem.h           \
254         gtktypeutils.h          \
255         gtkvbbox.h              \
256         gtkvbox.h               \
257         gtkviewport.h           \
258         gtkvpaned.h             \
259         gtkvruler.h             \
260         gtkvscale.h             \
261         gtkvscrollbar.h         \
262         gtkvseparator.h         \
263         gtkwidget.h             \
264         gtkwindow.h
265
266 # More headers to use when autogenerating.
267 gdk_headers = \
268         ../gdk/gdkcc.h          \
269         ../gdk/gdkcolor.h       \
270         ../gdk/gdkcursor.h      \
271         ../gdk/gdkdnd.h         \
272         ../gdk/gdkdrawable.h    \
273         ../gdk/gdkevents.h      \
274         ../gdk/gdkfont.h        \
275         ../gdk/gdkgc.h          \
276         ../gdk/gdkim.h          \
277         ../gdk/gdkimage.h       \
278         ../gdk/gdkinput.h       \
279         ../gdk/gdkpixmap.h      \
280         ../gdk/gdkproperty.h    \
281         ../gdk/gdkregion.h      \
282         ../gdk/gdkrgb.h         \
283         ../gdk/gdkselection.h   \
284         ../gdk/gdktypes.h       \
285         ../gdk/gdkvisual.h      \
286         ../gdk/gdkwindow.h
287
288 ../config.h : ../config.h.win32
289         cp ../config.h.win32 ../config.h
290
291 gtkcompat.h : gtkcompat.h.win32
292         cp gtkcompat.h.win32 gtkcompat.h
293
294 #
295 # Generated source files:
296 #
297 generated : gtk.defs gtktypebuiltins.h gtktypebuiltins_vars.c gtktypebuiltins_ids.c gtktypebuiltins_evals.c gtkmarshal.h gtkmarshal.c
298
299 gtk.defs : makeenums.pl gtk-boxed.defs $(source_headers) $(gdk_headers)
300         $(PERL) makeenums.pl defs $(source_headers) $(gdk_headers) >gd.tmp
301         cat gd.tmp gtk-boxed.defs >gtk.defs
302         rm gd.tmp
303
304 # generate type identifier header (GTK_TYPE_WIDGET_FLAGS)
305 gtktypebuiltins.h: gtk.defs maketypes.awk
306         $(AWK) -f maketypes.awk gtk.defs macros >gtktypebuiltins.h
307
308 # generate type identifier variables (GTK_TYPE_WIDGET_FLAGS)
309 gtktypebuiltins_vars.c: gtk.defs maketypes.awk
310         $(AWK) -f maketypes.awk gtk.defs variables >gtktypebuiltins_vars.c
311
312 # generate type entries for type-id registration
313 gtktypebuiltins_ids.c: gtk.defs maketypes.awk
314         $(AWK) -f maketypes.awk gtk.defs entries >gtktypebuiltins_ids.c
315
316 # generate enum value arrays
317 gtktypebuiltins_evals.c: makeenums.pl gtk.defs
318         $(PERL) makeenums.pl arrays $(source_headers) $(gdk_headers) >gtktypebuiltins_evals.c
319
320 gtkmarshal.h gtkmarshal.c : gtkmarshal.list genmarshal.pl
321         $(PERL) genmarshal.pl gtkmarshal.list s-gmh s-gmc
322         -rm gtkmarshal.c
323         mv s-gmc gtkmarshal.c
324         -rm gtkmarshal.h
325         mv s-gmh gtkmarshal.h
326
327 #
328 # Linking:
329 #
330 gtk-$(GTK_VER).dll : generated $(gtk_OBJECTS) gtk.def gtk-win32res.o
331         $(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
332
333 .SUFFIXES: .c .o .i
334
335 # Kludge to get the path to the win32 headers
336 WIN32APIHEADERS = $(shell echo "\#include <winver.h>" | $(CC) -M -E - | tail -1 | sed -e 's!/winver.h!!')
337
338 gtk-win32res.o : gtk.rc gtk-build.tmp
339         m4 -DBUILDNUMBER=`cat gtk-build.tmp` <gtk.rc >gtk-win32res.rc
340         windres --include-dir $(WIN32APIHEADERS) gtk-win32res.rc gtk-win32res.o
341         rm gtk-build.tmp gtk-win32res.rc
342
343 # Magic to bump the build number
344 gtk-build.tmp :
345         bash -c "read number && echo $$[number+1]" <gtk-build.stamp >gtk-build.tmp
346         cp gtk-build.tmp gtk-build.stamp
347
348 # General rule for compiling the objects into the DLL
349 .c.o :
350         $(CC) $(CFLAGS) -c -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" $<
351
352 .c.i :
353         $(CC) $(CFLAGS) -E -DGDK_COMPILATION -DG_LOG_DOMAIN=\"Gdk\" $< >$@
354
355 #
356 # Test programs:
357 #
358 testdnd.exe : testdnd.o
359         $(CC) $(CFLAGS) -o $@ testdnd.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS)
360
361 # Must have separate rules for these objects that don't go in the DLL
362 testdnd.o : testdnd.c
363         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testdnd\" testdnd.c
364
365 testgtk.exe : testgtk.o
366         $(CC) $(CFLAGS) -o $@  testgtk.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS)
367
368 testgtk.o : testgtk.c
369         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testgtk\" testgtk.c
370
371 testinput.exe : testinput.o
372         $(CC) $(CFLAGS) -o $@  testinput.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS)
373
374 testinput.o : testinput.c
375         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testinput\" testinput.c
376
377 testrgb.exe : testrgb.o
378         $(CC) $(CFLAGS) -o $@  testrgb.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS)
379
380 testrgb.o : testrgb.c
381         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testrgb\" testrgb.c
382
383 testselection.exe : testselection.o
384         $(CC) $(CFLAGS) -o $@  testselection.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS)
385
386 testselection.o : testselection.c
387         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testselection\" testselection.c
388
389 testthreads.exe : testthreads.o
390         $(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)
391
392 testthreads.o : testthreads.c
393         $(CC) $(CFLAGS) -I$(PTHREAD_INC) -c -DG_LOG_DOMAIN=\"testthreads\" -DUSE_PTHREADS=1 testthreads.c
394
395 simple.exe : simple.o
396         $(CC) $(CFLAGS) -o $@  simple.o -L . -lgtk-$(GTK_VER) -L ../gdk -lgdk-$(GTK_VER) -L $(GLIB) -lglib-$(GLIB_VER) $(LDFLAGS)
397
398 simple.o : simple.c
399         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"simple\" simple.c
400
401 # The clean target doesn't remove the generated sources
402 clean:
403         -rm *.exe *.o *.dll *.a *.exp *.base