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