]> Pileus Git - ~andy/gtk/blob - gtk/makefile.msc.in
27c126e37fcf8b013af1204b0d4616930ab0c68d
[~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)/glib/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
17 GDK_LIBS = ../gdk/gdk-win32-$(GTK_VER).lib
18 GTK_LIBS = gtk-win32-$(GTK_VER).lib
19 GDK_PIXBUF_LIBS = ../gdk-pixbuf/gdk_pixbuf-$(GDK_PIXBUF_VER).lib
20 GTK_BINARY_VERSION = @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@LT_CURRENT@
21
22 # Perl and awk are needed to generate some source files.
23 # These generated source files are distribuyted with the Win32 GTk+ source
24 # distributions, so don't worry if you don't have perl and awk.
25 PERL = perl
26 AWK = gawk
27
28 INCLUDES = -FImsvc_recommended_pragmas.h -I . -I .. -I ../gdk -I ../gdk-pixbuf
29 DEPCFLAGS = $(PANGO_CFLAGS) $(GLIB_CFLAGS) $(LIBICONV_CFLAGS) \
30                 $(INTL_CFLAGS) $(ATK_CFLAGS) $(CAIRO_CFLAGS)
31 LDFLAGS = $(ATK_LIBS) /link /machine:ix86 $(LINKDEBUG)
32 # Some files use near as an identifier
33 # Don't define GTK_COMPILATION here, because it's for gtk-x.x.dll only
34 DEFINES = $(G_DEBUGGING) -DGTK_DISABLE_COMPAT_H -DG_LOG_DOMAIN=\"Gtk\" -Dnear=xxnear \
35         -DPANGO_ENABLE_BACKEND \
36         -DGTK_VERSION=\"$(GTK_VER)\" -DGTK_BINARY_VERSION=\"$(GTK_BINARY_VERSION)\" \
37         -DGTK_HOST=\"win32\" \
38         -DGTK_FILE_SYSTEM_ENABLE_UNSUPPORTED
39
40 TOUCH = copy makefile.msc+nul
41
42 gtk-stocks-icons :
43         cd stock-icons
44         nmake -nologo -f makefile.msc
45         cd ..
46
47 all :                                           \
48         ..\config.h                             \
49         generated                               \
50         gtk-stocks-icons                        \
51         libgtk-win32-$(GTK_VER)-0.dll           \
52         gtk-query-immodules-$(GTK_VER).exe \
53 #       gtk-win32-$(GTK_VER)s.lib \
54 #       gtk-x11-$(GTK_VER).dll
55
56 gtk_OBJECTS =                                   \
57         fnmatch.obj                             \
58         gtkaboutdialog.obj      \
59         gtkaccelgroup.obj                       \
60         gtkaccellabel.obj                       \
61         gtkaccelmap.obj \
62         gtkaccessible.obj \
63         gtkaction.obj   \
64         gtkactiongroup.obj      \
65         gtkadjustment.obj                       \
66         gtkalignment.obj                        \
67         gtkarrow.obj                            \
68         gtkaspectframe.obj                      \
69         gtkbin.obj                              \
70         gtkbindings.obj                         \
71         gtkbbox.obj                             \
72         gtkbox.obj                              \
73         gtkbutton.obj                           \
74         gtkcalendar.obj                         \
75         gtkcelleditable.obj                     \
76         gtkcelllayout.obj                       \
77         gtkcellrenderer.obj                     \
78         gtkcellrenderercombo.obj \
79         gtkcellrenderertext.obj                 \
80         gtkcellrenderertoggle.obj               \
81         gtkcellrendererpixbuf.obj               \
82         gtkcellrendererprogress.obj             \
83         gtkcellview.obj         \
84         gtkcheckbutton.obj                      \
85         gtkcheckmenuitem.obj                    \
86         gtkclipboard.obj                        \
87         gtkclist.obj                            \
88         gtkcolorbutton.obj                              \
89         gtkcolorsel.obj                         \
90         gtkcolorseldialog.obj                   \
91         gtkcombo.obj                            \
92         gtkcombobox.obj                 \
93         gtkcomboboxentry.obj            \
94         gtkcontainer.obj                        \
95         gtkctree.obj                            \
96         gtkcurve.obj                            \
97         gtkdialog.obj                           \
98         gtkdnd.obj                              \
99         gtkdrawingarea.obj                      \
100         gtkeditable.obj                         \
101         gtkentry.obj                            \
102         gtkentrycompletion.obj          \
103         gtkeventbox.obj                         \
104         gtkexpander.obj                 \
105         gtkfilechooser.obj                      \
106         gtkfilechooserbutton.obj        \
107         gtkfilechooserdefault.obj                       \
108         gtkfilechooserdialog.obj                        \
109         gtkfilechooserembed.obj         \
110         gtkfilechooserentry.obj                 \
111         gtkfilechooserutils.obj                 \
112         gtkfilechooserwidget.obj                        \
113         gtkfilefilter.obj                       \
114         gtkfilesel.obj                          \
115         gtkfilesystem.obj                               \
116         gtkfilesystemmodel.obj                          \
117         gtkfilesystemwin32.obj                          \
118         gtkfixed.obj                            \
119         gtkfontsel.obj                          \
120         gtkfontbutton.obj                               \
121         gtkframe.obj                            \
122         gtkgamma.obj                            \
123         gtkgc.obj                               \
124         gtkhandlebox.obj                        \
125         gtkhbbox.obj                            \
126         gtkhbox.obj                             \
127         gtkhpaned.obj                           \
128         gtkhruler.obj                           \
129         gtkhscale.obj                           \
130         gtkhscrollbar.obj                       \
131         gtkhseparator.obj                       \
132         gtkhsv.obj                              \
133         gtkiconcache.obj                        \
134         gtkiconfactory.obj                      \
135         gtkicontheme.obj                        \
136         gtkiconview.obj                 \
137         gtkimage.obj                            \
138         gtkimagemenuitem.obj    \
139         gtkimcontext.obj                        \
140         gtkimcontextsimple.obj                  \
141         gtkimmodule.obj                         \
142         gtkimmulticontext.obj                   \
143         gtkinputdialog.obj                      \
144         gtkinvisible.obj                        \
145         gtkitem.obj                             \
146         gtkitemfactory.obj                      \
147         gtkkeyhash.obj  \
148         gtklabel.obj                            \
149         gtklayout.obj                           \
150         gtklist.obj                             \
151         gtklistitem.obj                         \
152         gtkliststore.obj                                \
153         gtkmain.obj                             \
154         gtkmarshalers.obj               \
155         gtkmarshal.obj          \
156         gtkmenu.obj                             \
157         gtkmenubar.obj                          \
158         gtkmenuitem.obj                         \
159         gtkmenushell.obj                        \
160         gtkmenutoolbutton.obj   \
161         gtkmessagedialog.obj                    \
162         gtkmisc.obj                             \
163         gtkmnemonichash.obj     \
164         gtkmodules.obj  \
165         gtknotebook.obj                         \
166         gtkobject.obj                           \
167         gtkoldeditable.obj                      \
168         gtkoptionmenu.obj                       \
169         gtkpaned.obj                            \
170         gtkpathbar.obj                          \
171         gtkpixmap.obj                           \
172 #       gtkplug.obj                             \
173         gtkpreview.obj                          \
174         gtkprogress.obj                         \
175         gtkprogressbar.obj                      \
176         gtkradioaction.obj                      \
177         gtkradiobutton.obj                      \
178         gtkradiotoolbutton.obj                  \
179         gtkradiomenuitem.obj                    \
180         gtkrange.obj                            \
181         gtkrbtree.obj   \
182         gtkrc.obj                               \
183         gtkruler.obj                            \
184         gtkscale.obj                            \
185         gtkscrollbar.obj                        \
186         gtkscrolledwindow.obj                   \
187         gtkselection.obj                        \
188         gtkseparator.obj                        \
189         gtkseparatormenuitem.obj \
190         gtkseparatortoolitem.obj \
191         gtksequence.obj \
192         gtksettings.obj \
193         gtksignal.obj                           \
194         gtksizegroup.obj \
195 #       gtksocket.obj                           \
196         gtkspinbutton.obj                       \
197         gtkstyle.obj                            \
198         gtkstatusbar.obj                        \
199         gtkstock.obj                            \
200         gtktable.obj                            \
201         gtktearoffmenuitem.obj                  \
202         gtktext.obj                             \
203         gtktextbtree.obj                        \
204         gtktextbuffer.obj                       \
205         gtktextchild.obj                        \
206         gtktextdisplay.obj                      \
207         gtktextiter.obj                         \
208         gtktextlayout.obj                       \
209         gtktextmark.obj                         \
210         gtktextsegment.obj                      \
211         gtktexttag.obj                          \
212         gtktexttagtable.obj                     \
213         gtktexttypes.obj                        \
214         gtktextutil.obj \
215         gtktextview.obj                         \
216         gtkthemes.obj                           \
217         gtktipsquery.obj                        \
218         gtktoggleaction.obj                     \
219         gtktogglebutton.obj                     \
220         gtktoggletoolbutton.obj                 \
221         gtktoolbar.obj                          \
222         gtktoolbutton.obj                               \
223         gtktoolitem.obj                         \
224         gtktooltips.obj                         \
225         gtktree.obj                             \
226         gtktreedatalist.obj     \
227         gtktreednd.obj                          \
228         gtktreeitem.obj                         \
229         gtktreemodel.obj                        \
230         gtktreemodelfilter.obj                  \
231         gtktreemodelsort.obj                    \
232         gtktreeselection.obj                    \
233         gtktreesortable.obj \
234         gtktreestore.obj                        \
235         gtktreeview.obj                 \
236         gtktreeviewcolumn.obj                   \
237         gtktypeutils.obj                        \
238         gtktypebuiltins.obj \
239         gtkuimanager.obj        \
240         gtkvbbox.obj                            \
241         gtkvbox.obj                             \
242         gtkviewport.obj                         \
243         gtkvpaned.obj                           \
244         gtkvruler.obj                           \
245         gtkvscale.obj                           \
246         gtkvscrollbar.obj                       \
247         gtkvseparator.obj                       \
248         gtkwidget.obj                           \
249         gtkwindow.obj                           \
250         gtkwindow-decorate.obj
251
252 # Source headers which are non-autogenerated headers
253 gtk_public_h_sources =          \
254         gtk.h                   \
255         gtkaboutdialog.h        \
256         gtkaccelgroup.h         \
257         gtkaccellabel.h         \
258         gtkaccelmap.h           \
259         gtkaccessible.h \
260         gtkaction.h             \
261         gtkactiongroup.h        \
262         gtkadjustment.h         \
263         gtkalignment.h          \
264         gtkarrow.h              \
265         gtkaspectframe.h        \
266         gtkbbox.h               \
267         gtkbin.h                \
268         gtkbindings.h           \
269         gtkbox.h                \
270         gtkbutton.h             \
271         gtkcalendar.h           \
272         gtkcelleditable.h       \
273         gtkcelllayout.h         \
274         gtkcellrenderer.h       \
275         gtkcellrendererpixbuf.h \
276         gtkcellrenderertext.h   \
277         gtkcellrenderertoggle.h \
278         gtkcellview.h \
279         gtkcheckbutton.h        \
280         gtkcheckmenuitem.h      \
281         gtkclipboard.h          \
282         gtkclist.h              \
283         gtkclipboard.h          \
284         gtkcolorbutton.h        \
285         gtkcolorsel.h           \
286         gtkcolorseldialog.h     \
287         gtkcombo.h              \
288         gtkcombobox.h           \
289         gtkcomboboxentry.h      \
290         gtkcontainer.h          \
291         gtkctree.h              \
292         gtkcurve.h              \
293         gtkdebug.h              \
294         gtkdialog.h             \
295         gtkdnd.h                \
296         gtkdrawingarea.h        \
297         gtkeditable.h           \
298         gtkentry.h              \
299         gtkentrycompletion.h    \
300         gtkenums.h              \
301         gtkeventbox.h           \
302         gtkexpander.h           \
303         gtkfilechooser.h        \
304         gtkfilechooserdialog.h  \
305         gtkfilechooserwidget.h  \
306         gtkfilefilter.h         \
307         gtkfilesel.h            \
308         gtkfixed.h              \
309         gtkfontbutton.h         \
310         gtkfontsel.h            \
311         gtkframe.h              \
312         gtkgamma.h              \
313         gtkgc.h                 \
314         gtkhandlebox.h          \
315         gtkhbbox.h              \
316         gtkhbox.h               \
317         gtkhpaned.h             \
318         gtkhruler.h             \
319         gtkhscale.h             \
320         gtkhscrollbar.h         \
321         gtkhseparator.h         \
322         gtkhsv.h                \
323         gtkiconfactory.h        \
324         gtkicontheme.h          \
325         gtkiconview.h           \
326         gtkimage.h              \
327         gtkimagemenuitem.h      \
328         gtkimcontext.h          \
329         gtkimcontextsimple.h    \
330         gtkimmodule.h           \
331         gtkimmulticontext.h     \
332         gtkinputdialog.h        \
333         gtkinvisible.h          \
334         gtkitem.h               \
335         gtkitemfactory.h        \
336         gtklabel.h              \
337         gtklayout.h             \
338         gtklist.h               \
339         gtklistitem.h           \
340         gtkliststore.h          \
341         gtkmain.h               \
342         gtkmarshal.h    \
343         gtkmenu.h               \
344         gtkmenubar.h            \
345         gtkmenuitem.h           \
346         gtkmenushell.h          \
347         gtkmessagedialog.h      \
348         gtkmisc.h               \
349         gtknotebook.h           \
350         gtkobject.h             \
351         gtkoldeditable.h        \
352         gtkoptionmenu.h         \
353         gtkpaned.h              \
354         gtkpixmap.h             \
355         gtkplug.h               \
356         gtkpreview.h            \
357         gtkprivate.h            \
358         gtkprogress.h           \
359         gtkprogressbar.h        \
360         gtkradioaction.h        \
361         gtkradiobutton.h        \
362         gtkradiomenuitem.h      \
363         gtkradiotoolbutton.h    \
364         gtkrange.h              \
365         gtkrc.h                 \
366         gtkruler.h              \
367         gtkscale.h              \
368         gtkscrollbar.h          \
369         gtkscrolledwindow.h     \
370         gtkselection.h          \
371         gtkseparator.h          \
372         gtkseparatormenuitem.h  \
373         gtkseparatortoolitem.h  \
374         gtksettings.h           \
375         gtksignal.h             \
376         gtksizegroup.h  \
377         gtksignal.h             \
378         gtksocket.h             \
379         gtkspinbutton.h         \
380         gtkstatusbar.h          \
381         gtkstock.h              \
382         gtkstyle.h              \
383         gtktable.h              \
384         gtktearoffmenuitem.h    \
385         gtktext.h               \
386         gtktextbuffer.h         \
387         gtktextchild.h          \
388         gtktextdisplay.h        \
389         gtktextiter.h           \
390         gtktextlayout.h         \
391         gtktextmark.h           \
392         gtktexttag.h            \
393         gtktexttagtable.h       \
394         gtktextview.h           \
395         gtktipsquery.h          \
396         gtktoggleaction.h       \
397         gtktogglebutton.h       \
398         gtktoggletoolbutton.h   \
399         gtktoolbar.h            \
400         gtktoolbutton.h         \
401         gtktoolitem.h           \
402         gtktooltips.h           \
403         gtktree.h               \
404         gtktreednd.h            \
405         gtktreeitem.h           \
406         gtktreemodel.h          \
407         gtktreemodelfilter.h    \
408         gtktreemodelsort.h      \
409         gtktreeselection.h      \
410         gtktreesortable.h       \
411         gtktreestore.h          \
412         gtktreeview.h           \
413         gtktreeviewcolumn.h     \
414         gtktypeutils.h          \
415         gtkuimanager.h  \
416         gtkvbbox.h              \
417         gtkvbox.h               \
418         gtkviewport.h           \
419         gtkvpaned.h             \
420         gtkvruler.h             \
421         gtkvscale.h             \
422         gtkvscrollbar.h         \
423         gtkvseparator.h         \
424         gtkwidget.h             \
425         gtkwindow.h
426
427 # these aren't use here, but listed for reference
428 gtk_extra_sources = \
429         gtkversion.h            \
430         gtk-boxed.defs          \
431         gtkmarshal.list         \
432
433 ..\config.h : ..\config.h.win32
434         copy ..\config.h.win32 ..\config.h
435
436 GENERATED = \
437         gtktypebuiltins.h gtktypebuiltins.c \
438         gtkmarshal.h gtkmarshal.c gtkmarshalers.h gtkmarshalers.c \
439         gtk.def gtkalias.h gtkaliasdef.c
440
441 #
442 # Generated source files:
443 #
444 generated : $(GENERATED)
445         $(TOUCH) generated
446
447 gtk.def: gtk.symbols makefile.msc
448         echo EXPORTS > gtk.def
449         cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DALL_FILES gtk.symbols >> gtk.def
450
451 gtkalias.h: gtk.symbols
452         cl /EP -DG_OS_WIN32 -DGTK_WINDOWING_WIN32 -DINCLUDE_INTERNAL_SYMBOLS gtk.symbols | $(PERL) makegtkalias.pl > gtkalias.h
453
454 gtkaliasdef.c: gtk.symbols
455          perl makegtkalias.pl -def < gtk.symbols > gtkaliasdef.c
456
457 # generate type identifier header (GTK_TYPE_WIDGET_FLAGS)
458 # use 'echo' to work around 'command line too long'
459 gtktypebuiltins.h: $(gtk_public_h_sources) makefile.msc
460         echo #ifndef __GTK_TYPE_BUILTINS_H__ > gtktypebuiltins.h
461         echo #define __GTK_TYPE_BUILTINS_H__ >> gtktypebuiltins.h
462         echo #include "glib-object.h" >> gtktypebuiltins.h
463         echo G_BEGIN_DECLS >> gtktypebuiltins.h
464         $(PERL) $(GLIB)\gobject\glib-mkenums \
465                 --fprod "/* enumerations from \"@filename@\" */\n" \
466                 --vhead "GType @enum_name@_get_type (void);\n#define GTK_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
467                 --ftail "G_END_DECLS\n\n#endif /* __GTK_TYPE_BUILTINS_H__ */" \
468                 $(gtk_public_h_sources) >> gtktypebuiltins.h
469
470 gtktypebuiltins.c: $(gtk_public_h_sources) makefile.msc
471         $(PERL) $(GLIB)\gobject\glib-mkenums \
472                 --fhead "#define GTK_ENABLE_BROKEN\n#include \"gtk.h\"\n#include \"gtkprivate.h\"" \
473                 --fprod "\n/* enumerations from \"@filename@\" */" \
474                 --vhead "GType\n@enum_name@_get_type (void)\n{\n  static GType etype = 0;\n  if (etype == 0) {\n    static const G@Type@Value values[] = {" \
475                 --vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
476                 --vtail "      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static (\"@EnumName@\", values);\n  }\n  return etype;\n}\n" \
477                 $(gtk_public_h_sources) > xgen-gtbc
478         copy xgen-gtbc gtktypebuiltins.c
479
480 # private marshalers
481 gtkmarshalers.h : gtkmarshalers.list
482         $(GLIB)\gobject\glib-genmarshal --prefix=_gtk_marshal gtkmarshalers.list --header >>gtkmarshalers.h
483
484 gtkmarshalers.c : gtkmarshalers.list
485         $(GLIB)\gobject\glib-genmarshal --prefix=_gtk_marshal gtkmarshalers.list --body >gtkmarshalers.c
486
487 # public, deprecated marshalers
488 gtkmarshal.h : gtkmarshal.list
489         echo #ifndef GTK_DISABLE_DEPRECATED >gtkmarshal.h
490         $(GLIB)\gobject\glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --header >>gtkmarshal.h
491         echo #endif /* GTK_DISABLE_DEPRECATED */ >>gtkmarshal.h
492
493 gtkmarshal.c : gtkmarshal.list
494         $(GLIB)\gobject\glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --body >gtkmarshal.c
495
496 gtksignal.obj : gtksignal.c gtkmarshal.c gtkmarshal.h
497         $(CC) $(CFLAGS) -GD -c -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" gtksignal.c
498
499 gtk-win32.res : gtk-win32.rc
500         rc -DBUILDNUMBER=0 -r -fo gtk-win32.res gtk-win32.rc
501
502 #
503 # Linking:
504 #
505 libgtk-win32-$(GTK_VER)-0.dll : $(gtk_OBJECTS) gtk.def gtk-win32.res
506         $(CC) $(CFLAGS) -LD -Fm -Fe$@ $(gtk_OBJECTS) gtk-win32.res \
507         $(GDK_LIBS) $(GDK_PIXBUF_LIBS) $(PANGO_LIBS) $(INTL_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) \
508         $(CAIRO_LIBS) $(PANGOCAIRO_LIBS) \
509         gdi32.lib user32.lib advapi32.lib wsock32.lib shell32.lib ole32.lib \
510         $(LDFLAGS) /implib:gtk-win32-$(GTK_VER).lib /def:gtk.def
511
512 gtk-win32-$(GTK_VER)s.lib : $(gtk_OBJECTS)
513         lib /out:gtk-win32-$(GTK_VER)s.lib $(gtk_OBJECTS)
514
515 gtk-query-immodules-$(GTK_VER).exe : queryimmodules.obj
516         $(CC) $(CFLAGS) -Fe$@ queryimmodules.obj $(GTK_LIBS) $(GLIB_LIBS) $(PANGO_LIBS) $(LDFLAGS)
517
518 gtk-x11-$(GTK_VER).dll : $(gtk_OBJECTS) gtk.def
519         $(CC) $(CFLAGS) -LD -Fm -Fegtk-x11-$(GTK_VER).dll $(gtk_OBJECTS) ../gdk/gdk-x11-$(GTK_VER).lib $(GDK_PIXBUF_LIBS) $(PANGO_LIBS) $(INTL_LIBS) $(GLIB_LIBS) gdi32.lib user32.lib advapi32.lib $(LDFLAGS) /def:gtk.def
520
521 # General rule for compiling the objects into the DLL
522 .c.obj :
523         $(CC) $(CFLAGS) -GD -c -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" $<
524
525 $(EXAMPLE).obj : ..\examples\$(EXAMPLE)\$(EXAMPLE).c
526         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"$(EXAMPLE)\" ..\examples\$(EXAMPLE)\$(EXAMPLE).c
527
528 $(EXAMPLE).exe : $(EXAMPLE).obj
529         $(CC) $(CFLAGS) $(EXAMPLE).obj $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
530