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