]> Pileus Git - ~andy/gtk/blob - gtk/makefile.msc.in
Include <stdlib.h> for getenv().
[~andy/gtk] / gtk / makefile.msc.in
1 ## Makefile for building the gtk DLL with Microsoft C
2 ## Use: nmake -f makefile.msc
3
4 ## There is no install target, you have to decide where and 
5 ## how to install for yourself.
6
7 TOP = ../..
8 !INCLUDE $(TOP)/build/win32/make.msc
9
10 ################################################################
11
12 # Possibly override versions from build/win32/module.defs
13 GTK_VER = @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@
14 GDK_PIXBUF_VER = @GDK_PIXBUF_MAJOR@.@GDK_PIXBUF_MINOR@
15
16 GDK_LIBS = ../gdk/gdk-win32-$(GTK_VER).lib
17 GTK_LIBS = gtk-win32-$(GTK_VER).lib
18 GDK_PIXBUF_LIBS = ../gdk-pixbuf/gdk_pixbuf-$(GDK_PIXBUF_VER).lib
19
20 # Perl and awk are needed to generate some source files.
21 # These generated source files are distribuyted with the Win32 GTk+ source
22 # distributions, so don't worry if you don't have perl and awk.
23 PERL = perl
24 AWK = gawk
25
26 INCLUDES = -I . -I .. -I ../gdk -I ../gdk-pixbuf
27 DEPCFLAGS = $(PANGO_CFLAGS) $(GLIB_CFLAGS) $(LIBICONV_CFLAGS) $(INTL_CFLAGS)
28 LDFLAGS = /link /machine:ix86 $(LINKDEBUG)
29 # Some files use near as an identifier
30 DEFINES = -DGTK_DISABLE_COMPAT_H -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" -Dnear=xxnear -DGTK_VERSION=\"@GTK_VERSION@\"
31
32 TOUCH = copy makefile.msc+nul
33
34 GTK_VER=1.3
35
36 all :                                           \
37         ..\config.h                             \
38         generated                               \
39         gtk-win32-$(GTK_VER).dll                \
40         testcalendar.exe                        \
41         testdnd.exe                             \
42         testgtk.exe                             \
43         testinput.exe                           \
44         testrgb.exe                             \
45         testselection.exe                       \
46         testtext.exe                            \
47         testtextbuffer.exe                      \
48         simple.exe
49
50 gtk_OBJECTS =                                   \
51         fnmatch.obj                             \
52         gdk-pixbuf-loader.obj                   \
53         gtkaccelgroup.obj                       \
54         gtkaccellabel.obj                       \
55         gtkadjustment.obj                       \
56         gtkalignment.obj                        \
57         gtkarg.obj                              \
58         gtkarrow.obj                            \
59         gtkaspectframe.obj                      \
60         gtkbin.obj                              \
61         gtkbindings.obj                         \
62         gtkbbox.obj                             \
63         gtkbox.obj                              \
64         gtkbutton.obj                           \
65         gtkcalendar.obj                         \
66         gtkcellrenderer.obj                     \
67         gtkcellrenderertext.obj                 \
68         gtkcellrenderertextpixbuf.obj           \
69         gtkcellrenderertoggle.obj               \
70         gtkcellrendererpixbuf.obj               \
71         gtkcheckbutton.obj                      \
72         gtkcheckmenuitem.obj                    \
73         gtkclipboard.obj                        \
74         gtkclist.obj                            \
75         gtkcolorsel.obj                         \
76         gtkcolorseldialog.obj                   \
77         gtkcombo.obj                            \
78         gtkcontainer.obj                        \
79         gtkctree.obj                            \
80         gtkcurve.obj                            \
81         gtkdata.obj                             \
82         gtkdialog.obj                           \
83         gtkdnd.obj                              \
84         gtkdrawingarea.obj                      \
85         gtkeditable.obj                         \
86         gtkentry.obj                            \
87         gtkeventbox.obj                         \
88         gtkfilesel.obj                          \
89         gtkfixed.obj                            \
90         gtkfontsel.obj                          \
91         gtkframe.obj                            \
92         gtkgamma.obj                            \
93         gtkgc.obj                               \
94         gtkhandlebox.obj                        \
95         gtkhbbox.obj                            \
96         gtkhbox.obj                             \
97         gtkhpaned.obj                           \
98         gtkhruler.obj                           \
99         gtkhscale.obj                           \
100         gtkhscrollbar.obj                       \
101         gtkhseparator.obj                       \
102         gtkhsv.obj                              \
103         gtkiconfactory.obj                      \
104         gtkimage.obj                            \
105         gtkimcontext.obj                        \
106         gtkimcontextsimple.obj                  \
107         gtkimmodule.obj                         \
108         gtkimmulticontext.obj                   \
109         gtkinputdialog.obj                      \
110         gtkinvisible.obj                        \
111         gtkitem.obj                             \
112         gtkitemfactory.obj                      \
113         gtklabel.obj                            \
114         gtklayout.obj                           \
115         gtklist.obj                             \
116         gtklistitem.obj                         \
117         gtkmain.obj                             \
118         gtkmenu.obj                             \
119         gtkmenubar.obj                          \
120         gtkmenufactory.obj                      \
121         gtkmenuitem.obj                         \
122         gtkmenushell.obj                        \
123         gtkmessagedialog.obj                    \
124         gtkmisc.obj                             \
125         gtknotebook.obj                         \
126         gtkobject.obj                           \
127         gtkoldeditable.obj                      \
128         gtkoptionmenu.obj                       \
129         gtkpacker.obj                           \
130         gtkpaned.obj                            \
131         gtkpixmap.obj                           \
132         gtkplug.obj                             \
133         gtkpreview.obj                          \
134         gtkprogress.obj                         \
135         gtkprogressbar.obj                      \
136         gtkradiobutton.obj                      \
137         gtkradiomenuitem.obj                    \
138         gtkrange.obj                            \
139         gtkrc.obj                               \
140         gtkruler.obj                            \
141         gtkscale.obj                            \
142         gtkscrollbar.obj                        \
143         gtkscrolledwindow.obj                   \
144         gtkselection.obj                        \
145         gtkseparator.obj                        \
146         gtksignal.obj                           \
147         gtksocket.obj                           \
148         gtkspinbutton.obj                       \
149         gtkstyle.obj                            \
150         gtkstatusbar.obj                        \
151         gtkstock.obj                            \
152         gtktable.obj                            \
153         gtktearoffmenuitem.obj                  \
154         gtktext.obj                             \
155         gtktextbtree.obj                        \
156         gtktextbuffer.obj                       \
157         gtktextchild.obj                        \
158         gtktextdisplay.obj                      \
159         gtktextiter.obj                         \
160         gtktextlayout.obj                       \
161         gtktextmark.obj                         \
162         gtktextsegment.obj                      \
163         gtktexttag.obj                          \
164         gtktexttagtable.obj                     \
165         gtktexttypes.obj                        \
166         gtktextview.obj                         \
167         gtkthemes.obj                           \
168         gtktipsquery.obj                        \
169         gtktogglebutton.obj                     \
170         gtktoolbar.obj                          \
171         gtktooltips.obj                         \
172         gtktree.obj                             \
173         gtktreeitem.obj                         \
174         gtktreemodel.obj                        \
175         gtktypeutils.obj                        \
176         gtkvbbox.obj                            \
177         gtkvbox.obj                             \
178         gtkviewport.obj                         \
179         gtkvpaned.obj                           \
180         gtkvruler.obj                           \
181         gtkvscale.obj                           \
182         gtkvscrollbar.obj                       \
183         gtkvseparator.obj                       \
184         gtkwidget.obj                           \
185         gtkwindow.obj                           \
186         gtkwindow-decorate.obj
187
188 # Source headers which are non-autogenerated headers
189 gtk_public_h_sources =          \
190         gtk.h                   \
191         gtkaccelgroup.h         \
192         gtkaccellabel.h         \
193         gtkadjustment.h         \
194         gtkalignment.h          \
195         gtkarg.h                \
196         gtkarrow.h              \
197         gtkaspectframe.h        \
198         gtkbin.h                \
199         gtkbindings.h           \
200         gtkbbox.h               \
201         gtkbox.h                \
202         gtkbutton.h             \
203         gtkcalendar.h           \
204         gtkcheckbutton.h        \
205         gtkcheckmenuitem.h      \
206         gtkclist.h              \
207         gtkclipboard.h          \
208         gtkcolorsel.h           \
209         gtkcolorseldialog.h     \
210         gtkcombo.h              \
211         gtkcompat.h             \
212         gtkcontainer.h          \
213         gtkctree.h              \
214         gtkcurve.h              \
215         gtkcellrenderer.h       \
216         gtkcellrenderertext.h   \
217         gtkcellrenderertextpixbuf.h     \
218         gtkcellrenderertoggle.h \
219         gtkcellrendererpixbuf.h \
220         gtkdata.h               \
221         gtkdebug.h              \
222         gtkdialog.h             \
223         gtkdnd.h                \
224         gtkdrawingarea.h        \
225         gtkeditable.h           \
226         gtkentry.h              \
227         gtkenums.h              \
228         gtkeventbox.h           \
229         gtkfilesel.h            \
230         gtkfixed.h              \
231         gtkfontsel.h            \
232         gtkframe.h              \
233         gtkgamma.h              \
234         gtkgc.h                 \
235         gtkhandlebox.h          \
236         gtkhbbox.h              \
237         gtkhbox.h               \
238         gtkhpaned.h             \
239         gtkhruler.h             \
240         gtkhscale.h             \
241         gtkhscrollbar.h         \
242         gtkhseparator.h         \
243         gtkhsv.h                \
244         gtkiconfactory.h        \
245         gtkimage.h              \
246         gtkimcontext.h          \
247         gtkimmodule.h           \
248         gtkimmulticontext.h     \
249         gtkinputdialog.h        \
250         gtkinvisible.h          \
251         gtkitem.h               \
252         gtkitemfactory.h        \
253         gtklabel.h              \
254         gtklayout.h             \
255         gtklist.h               \
256         gtklistitem.h           \
257         gtkliststore.h          \
258         gtkmain.h               \
259         gtkmenu.h               \
260         gtkmenubar.h            \
261         gtkmenufactory.h        \
262         gtkmenuitem.h           \
263         gtkmenushell.h          \
264         gtkmessagedialog.h      \
265         gtkmisc.h               \
266         gtkmodelsimple.h        \
267         gtknotebook.h           \
268         gtkoldeditable.h        \
269         gtkobject.h             \
270         gtkoptionmenu.h         \
271         gtkpacker.h             \
272         gtkpaned.h              \
273         gdk-pixbuf-loader.h     \
274         gtkpixmap.h             \
275         gtkplug.h               \
276         gtkpreview.h            \
277         gtkprivate.h            \
278         gtkprogress.h           \
279         gtkprogressbar.h        \
280         gtkradiobutton.h        \
281         gtkradiomenuitem.h      \
282         gtkrange.h              \
283         gtkrc.h                 \
284         gtkruler.h              \
285         gtkscale.h              \
286         gtkscrollbar.h          \
287         gtkscrolledwindow.h     \
288         gtkselection.h          \
289         gtkseparator.h          \
290         gtksignal.h             \
291         gtksocket.h             \
292         gtkspinbutton.h         \
293         gtkstyle.h              \
294         gtkstatusbar.h          \
295         gtkstock.h              \
296         gtktable.h              \
297         gtktearoffmenuitem.h    \
298         gtktextbuffer.h         \
299         gtktextchild.h          \
300         gtktextdisplay.h        \
301         gtktextiter.h           \
302         gtktextlayout.h         \
303         gtktextmark.h           \
304         gtktexttag.h            \
305         gtktexttagtable.h       \
306         gtktextview.h           \
307         gtktext.h               \
308         gtktipsquery.h          \
309         gtktogglebutton.h       \
310         gtktoolbar.h            \
311         gtktooltips.h           \
312         gtktree.h               \
313         gtktreeitem.h           \
314         gtktreemodel.h          \
315         gtktreemodelsort.h      \
316         gtktreeselection.h      \
317         gtktreestore.h          \
318         gtktreeview.h           \
319         gtktreeviewcolumn.h     \
320         gtktypeutils.h          \
321         gtkvbbox.h              \
322         gtkvbox.h               \
323         gtkviewport.h           \
324         gtkvpaned.h             \
325         gtkvruler.h             \
326         gtkvscale.h             \
327         gtkvscrollbar.h         \
328         gtkvseparator.h         \
329         gtkwidget.h             \
330         gtkwindow.h
331
332 # More headers to use when autogenerating.
333 gdk_headers =                   \
334         ..\gdk\gdkcc.h          \
335         ..\gdk\gdkcolor.h       \
336         ..\gdk\gdkcursor.h      \
337         ..\gdk\gdkdnd.h         \
338         ..\gdk\gdkdrawable.h    \
339         ..\gdk\gdkevents.h      \
340         ..\gdk\gdkfont.h        \
341         ..\gdk\gdkgc.h          \
342         ..\gdk\gdkim.h          \
343         ..\gdk\gdkimage.h       \
344         ..\gdk\gdkinput.h       \
345         ..\gdk\gdkpixmap.h      \
346         ..\gdk\gdkproperty.h    \
347         ..\gdk\gdkregion.h      \
348         ..\gdk\gdkrgb.h         \
349         ..\gdk\gdkselection.h   \
350         ..\gdk\gdktypes.h       \
351         ..\gdk\gdkvisual.h      \
352         ..\gdk\gdkwindow.h
353
354 ..\config.h : ..\config.h.win32
355         copy ..\config.h.win32 ..\config.h
356
357 GENERATED = gtk.defs gtktypebuiltins.h gtktypebuiltins_vars.c gtktypebuiltins_ids.c gtktypebuiltins_evals.c gtkmarshal.h gtkmarshal.c
358
359 #
360 # Generated source files:
361 #
362 generated : $(GENERATED)
363         $(TOUCH) generated
364
365 gtk.defs : makeenums.pl gtk-boxed.defs $(gtk_public_h_sources) $(gdk_headers)
366         $(PERL) makeenums.pl defs $(gtk_public_h_sources) $(gdk_headers) >gd.tmp
367         copy gd.tmp+gtk-boxed.defs gtk.defs
368         @erase gd.tmp
369
370 # generate type identifier header (GTK_TYPE_WIDGET_FLAGS)
371 gtktypebuiltins.h: gtk.defs maketypes.awk
372         $(AWK) -f maketypes.awk gtk.defs macros >gtktypebuiltins.h
373
374 # generate type identifier variables (GTK_TYPE_WIDGET_FLAGS)
375 gtktypebuiltins_vars.c: gtk.defs maketypes.awk
376         $(AWK) -f maketypes.awk gtk.defs variables >gtktypebuiltins_vars.c
377
378 # generate type entries for type-id registration
379 gtktypebuiltins_ids.c: gtk.defs maketypes.awk
380         $(AWK) -f maketypes.awk gtk.defs entries >gtktypebuiltins_ids.c
381
382 # generate enum value arrays
383 gtktypebuiltins_evals.c: makeenums.pl gtk.defs
384         $(PERL) makeenums.pl arrays $(gtk_public_h_sources) $(gdk_headers) >gtktypebuiltins_evals.c
385
386 gtkmarshal.h : gtkmarshal.list
387         glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --header >gtkmarshal.h
388
389 gtkmarshal.c : gtkmarshal.list
390         glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --body >gtkmarshal.c
391
392 #
393 # Linking:
394 #
395 gtk-win32-$(GTK_VER).dll : $(gtk_OBJECTS) gtk.def
396         $(CC) $(CFLAGS) -LD -Fegtk-win32-$(GTK_VER).dll $(gtk_OBJECTS) $(GDK_LIBS) $(GDK_PIXBUF_LIBS) $(PANGO_LIBS) $(INTL_LIBS) $(GLIB_LIBS) gdi32.lib user32.lib advapi32.lib $(LDFLAGS) /def:gtk.def
397
398 # General rule for compiling the objects into the DLL
399 .c.obj :
400         $(CC) $(CFLAGS) -GD -c -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" $<
401
402 #
403 # Test programs:
404 #
405 testcalendar.exe : gtk-win32-$(GTK_VER).dll testcalendar.obj
406         $(CC) $(CFLAGS) testcalendar.obj $(GTK_LIBS) $(GDK_LIBS) $(PANGO_LIBS) $(GLIB_LIBS) $(LDFLAGS)
407
408 # Must have separate rules for these objects that don't go in the DLL
409 testcalendar.obj : testcalendar.c
410         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testcalendar\" testcalendar.c
411
412 testdnd.exe : gtk-win32-$(GTK_VER).dll testdnd.obj
413         $(CC) $(CFLAGS) testdnd.obj $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
414
415 testdnd.obj : testdnd.c
416         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testdnd\" testdnd.c
417
418 testgtk.exe : gtk-win32-$(GTK_VER).dll testgtk.obj
419         $(CC) $(CFLAGS) testgtk.obj $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(PANGO_LIBS) $(LDFLAGS)
420
421 testgtk.obj : testgtk.c
422         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testgtk\" testgtk.c
423
424 testinput.exe : gtk-win32-$(GTK_VER).dll testinput.obj
425         $(CC) $(CFLAGS) testinput.obj $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
426
427 testinput.obj : testinput.c
428         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testinput\" testinput.c
429
430 testrgb.exe : gtk-win32-$(GTK_VER).dll testrgb.obj
431         $(CC) $(CFLAGS) testrgb.obj $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
432
433 testrgb.obj : testrgb.c
434         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testrgb\" testrgb.c
435
436 testselection.exe : gtk-win32-$(GTK_VER).dll testselection.obj
437         $(CC) $(CFLAGS) testselection.obj $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
438
439 testselection.obj : testselection.c
440         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testselection\" testselection.c
441
442 testtext.exe : gtk-win32-$(GTK_VER).dll testtext.obj
443         $(CC) $(CFLAGS) testtext.obj $(PANGO_LIBS) $(GDK_PIXBUF_LIBS) $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
444
445 testtext.obj : testtext.c
446         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testtext\" testtext.c
447
448 testtextbuffer.exe : gtk-win32-$(GTK_VER).dll testtextbuffer.obj
449         $(CC) $(CFLAGS) testtextbuffer.obj $(GDK_PIXBUF_LIBS) $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
450
451 testtextbuffer.obj : testtextbuffer.c
452         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testtextbuffer\" testtextbuffer.c
453
454 testthreads.exe : gtk-win32-$(GTK_VER).dll testthreads.obj
455         $(CC) $(CFLAGS) testthreads.obj $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(PTHREAD_LIBS) $(LDFLAGS)
456
457 testthreads.obj : testthreads.c
458         $(CC) $(CFLAGS) $(PTHREAD_CFLAGS) -c -DG_LOG_DOMAIN=\"testthreads\" -DUSE_PTHREADS=1 testthreads.c
459
460 simple.exe : gtk-win32-$(GTK_VER).dll simple.obj
461         $(CC) $(CFLAGS) simple.obj $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
462
463 simple.obj : simple.c
464         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"simple\" simple.c
465
466 makefile.msc: makefile.msc.in
467         sed -e s,@GTK[_]MAJOR_VERSION@,@GTK_MAJOR_VERSION@, \
468             -e s,@GTK[_]MINOR_VERSION@,@GTK_MINOR_VERSION@, \
469             -e 's,@GTK[_]VERSION@,@GTK_VERSION@,' \
470             -e 's,@GDK_PIXBUF[_]MAJOR@,@GDK_PIXBUF_MAJOR@,' \
471             -e 's,@GDK_PIXBUF[_]MINOR@,@GDK_PIXBUF_MINOR@,'  <makefile.msc.in >$@