]> Pileus Git - ~andy/gtk/blob - gtk/makefile.msc.in
make it compile with msvc: !HAVE_UNISTD_H; no label without op, even if
[~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 = -I . -I .. -I ../gdk -I ../gdk-pixbuf -DPANGO_ENABLE_BACKEND
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         -DGTK_VERSION=\"$(GTK_VER)\" -DGTK_BINARY_VERSION=\"$(GTK_BINARY_VERSION)\"
36
37 TOUCH = copy makefile.msc+nul
38
39 gtk-stocks-icons :
40         cd stock-icons
41         nmake -nologo -f makefile.msc
42         cd ..
43
44 all :                                           \
45         ..\config.h                             \
46         generated                               \
47         gtk-stocks-icons                        \
48         gtk-win32-$(GTK_VER).dll                \
49         gtk-query-immodules-$(GTK_VER).exe \
50 #       gtk-win32-$(GTK_VER)s.lib \
51 #       gtk-x11-$(GTK_VER).dll
52
53 gtk_OBJECTS =                                   \
54         fnmatch.obj                             \
55         gtkaccelgroup.obj                       \
56         gtkaccellabel.obj                       \
57         gtkaccelmap.obj \
58         gtkaccessible.obj \
59         gtkadjustment.obj                       \
60         gtkalignment.obj                        \
61         gtkarrow.obj                            \
62         gtkaspectframe.obj                      \
63         gtkbin.obj                              \
64         gtkbindings.obj                         \
65         gtkbbox.obj                             \
66         gtkbox.obj                              \
67         gtkbutton.obj                           \
68         gtkcalendar.obj                         \
69         gtkcelleditable.obj                     \
70         gtkcellrenderer.obj                     \
71         gtkcellrenderertext.obj                 \
72         gtkcellrenderertoggle.obj               \
73         gtkcellrendererpixbuf.obj               \
74         gtkcheckbutton.obj                      \
75         gtkcheckmenuitem.obj                    \
76         gtkclipboard.obj                        \
77         gtkclist.obj                            \
78         gtkcolorsel.obj                         \
79         gtkcolorseldialog.obj                   \
80         gtkcombo.obj                            \
81         gtkcontainer.obj                        \
82         gtkctree.obj                            \
83         gtkcurve.obj                            \
84         gtkdialog.obj                           \
85         gtkdnd.obj                              \
86         gtkdrawingarea.obj                      \
87         gtkeditable.obj                         \
88         gtkentry.obj                            \
89         gtkeventbox.obj                         \
90         gtkfilesel.obj                          \
91         gtkfixed.obj                            \
92         gtkfontsel.obj                          \
93         gtkframe.obj                            \
94         gtkgamma.obj                            \
95         gtkgc.obj                               \
96         gtkhandlebox.obj                        \
97         gtkhbbox.obj                            \
98         gtkhbox.obj                             \
99         gtkhpaned.obj                           \
100         gtkhruler.obj                           \
101         gtkhscale.obj                           \
102         gtkhscrollbar.obj                       \
103         gtkhseparator.obj                       \
104         gtkhsv.obj                              \
105         gtkiconfactory.obj                      \
106         gtkimage.obj                            \
107         gtkimagemenuitem.obj    \
108         gtkimcontext.obj                        \
109         gtkimcontextsimple.obj                  \
110         gtkimmodule.obj                         \
111         gtkimmulticontext.obj                   \
112         gtkinputdialog.obj                      \
113         gtkinvisible.obj                        \
114         gtkitem.obj                             \
115         gtkitemfactory.obj                      \
116         gtklabel.obj                            \
117         gtklayout.obj                           \
118         gtklist.obj                             \
119         gtklistitem.obj                         \
120         gtkliststore.obj                                \
121         gtkmain.obj                             \
122         gtkmarshalers.obj               \
123         gtkmarshal.obj          \
124         gtkmenu.obj                             \
125         gtkmenubar.obj                          \
126         gtkmenuitem.obj                         \
127         gtkmenushell.obj                        \
128         gtkmessagedialog.obj                    \
129         gtkmisc.obj                             \
130         gtknotebook.obj                         \
131         gtkobject.obj                           \
132         gtkoldeditable.obj                      \
133         gtkoptionmenu.obj                       \
134         gtkpaned.obj                            \
135         gtkpixmap.obj                           \
136         gtkplug.obj                             \
137         gtkpreview.obj                          \
138         gtkprogress.obj                         \
139         gtkprogressbar.obj                      \
140         gtkradiobutton.obj                      \
141         gtkradiomenuitem.obj                    \
142         gtkrange.obj                            \
143         gtkrbtree.obj   \
144         gtkrc.obj                               \
145         gtkruler.obj                            \
146         gtkscale.obj                            \
147         gtkscrollbar.obj                        \
148         gtkscrolledwindow.obj                   \
149         gtkselection.obj                        \
150         gtkseparator.obj                        \
151         gtkseparatormenuitem.obj \
152         gtksettings.obj \
153         gtksignal.obj                           \
154         gtksizegroup.obj \
155         gtksocket.obj                           \
156         gtkspinbutton.obj                       \
157         gtkstyle.obj                            \
158         gtkstatusbar.obj                        \
159         gtkstock.obj                            \
160         gtktable.obj                            \
161         gtktearoffmenuitem.obj                  \
162         gtktext.obj                             \
163         gtktextbtree.obj                        \
164         gtktextbuffer.obj                       \
165         gtktextchild.obj                        \
166         gtktextdisplay.obj                      \
167         gtktextiter.obj                         \
168         gtktextlayout.obj                       \
169         gtktextmark.obj                         \
170         gtktextsegment.obj                      \
171         gtktexttag.obj                          \
172         gtktexttagtable.obj                     \
173         gtktexttypes.obj                        \
174         gtktextview.obj                         \
175         gtkthemes.obj                           \
176         gtktipsquery.obj                        \
177         gtktogglebutton.obj                     \
178         gtktoolbar.obj                          \
179         gtktooltips.obj                         \
180         gtktree.obj                             \
181         gtktreedatalist.obj     \
182         gtktreednd.obj                          \
183         gtktreeitem.obj                         \
184         gtktreemodel.obj                        \
185         gtktreemodelsort.obj                    \
186         gtktreeselection.obj                    \
187         gtktreesortable.obj \
188         gtktreestore.obj                        \
189         gtktreeview.obj                 \
190         gtktreeviewcolumn.obj                   \
191         gtktypeutils.obj                        \
192         gtkvbbox.obj                            \
193         gtkvbox.obj                             \
194         gtkviewport.obj                         \
195         gtkvpaned.obj                           \
196         gtkvruler.obj                           \
197         gtkvscale.obj                           \
198         gtkvscrollbar.obj                       \
199         gtkvseparator.obj                       \
200         gtkwidget.obj                           \
201         gtkwindow.obj                           \
202         gtkwindow-decorate.obj
203
204 # Source headers which are non-autogenerated headers
205 gtk_public_h_sources =          \
206         gtk.h                   \
207         gtkaccelgroup.h         \
208         gtkaccellabel.h         \
209         gtkaccessible.h \
210         gtkadjustment.h         \
211         gtkalignment.h          \
212         gtkarrow.h              \
213         gtkaspectframe.h        \
214         gtkbin.h                \
215         gtkbindings.h           \
216         gtkbbox.h               \
217         gtkbox.h                \
218         gtkbutton.h             \
219         gtkcalendar.h           \
220         gtkcheckbutton.h        \
221         gtkcheckmenuitem.h      \
222         gtkclist.h              \
223         gtkclipboard.h          \
224         gtkcolorsel.h           \
225         gtkcolorseldialog.h     \
226         gtkcombo.h              \
227         gtkcontainer.h          \
228         gtkctree.h              \
229         gtkcurve.h              \
230         gtkcelleditable.h \
231         gtkcellrenderer.h       \
232         gtkcellrenderertext.h   \
233         gtkcellrenderertoggle.h \
234         gtkcellrendererpixbuf.h \
235         gtkdebug.h              \
236         gtkdialog.h             \
237         gtkdnd.h                \
238         gtkdrawingarea.h        \
239         gtkeditable.h           \
240         gtkentry.h              \
241         gtkenums.h              \
242         gtkeventbox.h           \
243         gtkfilesel.h            \
244         gtkfixed.h              \
245         gtkfontsel.h            \
246         gtkframe.h              \
247         gtkgamma.h              \
248         gtkgc.h                 \
249         gtkhandlebox.h          \
250         gtkhbbox.h              \
251         gtkhbox.h               \
252         gtkhpaned.h             \
253         gtkhruler.h             \
254         gtkhscale.h             \
255         gtkhscrollbar.h         \
256         gtkhseparator.h         \
257         gtkhsv.h                \
258         gtkiconfactory.h        \
259         gtkimage.h              \
260         gtkimcontext.h          \
261         gtkimmodule.h           \
262         gtkimmulticontext.h     \
263         gtkinputdialog.h        \
264         gtkinvisible.h          \
265         gtkitem.h               \
266         gtkitemfactory.h        \
267         gtklabel.h              \
268         gtklayout.h             \
269         gtklist.h               \
270         gtklistitem.h           \
271         gtkliststore.h          \
272         gtkmain.h               \
273         gtkmarshal.h    \
274         gtkmenu.h               \
275         gtkmenubar.h            \
276         gtkmenuitem.h           \
277         gtkmenushell.h          \
278         gtkmessagedialog.h      \
279         gtkmisc.h               \
280         gtknotebook.h           \
281         gtkoldeditable.h        \
282         gtkobject.h             \
283         gtkoptionmenu.h         \
284         gtkpaned.h              \
285         gtkpixmap.h             \
286         gtkplug.h               \
287         gtkpreview.h            \
288         gtkprivate.h            \
289         gtkprogress.h           \
290         gtkprogressbar.h        \
291         gtkradiobutton.h        \
292         gtkradiomenuitem.h      \
293         gtkrange.h              \
294         gtkrc.h                 \
295         gtkruler.h              \
296         gtkscale.h              \
297         gtkscrollbar.h          \
298         gtkscrolledwindow.h     \
299         gtkselection.h          \
300         gtkseparator.h          \
301         gtksizegroup.h  \
302         gtksignal.h             \
303         gtksocket.h             \
304         gtkspinbutton.h         \
305         gtkstyle.h              \
306         gtkstatusbar.h          \
307         gtkstock.h              \
308         gtktable.h              \
309         gtktearoffmenuitem.h    \
310         gtktextbuffer.h         \
311         gtktextchild.h          \
312         gtktextdisplay.h        \
313         gtktextiter.h           \
314         gtktextlayout.h         \
315         gtktextmark.h           \
316         gtktexttag.h            \
317         gtktexttagtable.h       \
318         gtktextview.h           \
319         gtktext.h               \
320         gtktipsquery.h          \
321         gtktogglebutton.h       \
322         gtktoolbar.h            \
323         gtktooltips.h           \
324         gtktree.h               \
325         gtktreeitem.h           \
326         gtktreemodel.h          \
327         gtktreemodelsort.h      \
328         gtktreeselection.h      \
329         gtktreesortable.h       \
330         gtktreestore.h          \
331         gtktreeview.h           \
332         gtktreeviewcolumn.h     \
333         gtktypeutils.h          \
334         gtkvbbox.h              \
335         gtkvbox.h               \
336         gtkviewport.h           \
337         gtkvpaned.h             \
338         gtkvruler.h             \
339         gtkvscale.h             \
340         gtkvscrollbar.h         \
341         gtkvseparator.h         \
342         gtkwidget.h             \
343         gtkwindow.h
344
345 # these aren't use here, but listed for reference
346 gtk_extra_sources = \
347         gtkversion.h            \
348         maketypes.awk           \
349         makeenums.h             \
350         gtk-boxed.defs          \
351         gtkmarshal.list         \
352
353 ..\config.h : ..\config.h.win32
354         copy ..\config.h.win32 ..\config.h
355
356 GENERATED = gtk.defs gtktypebuiltins.h gtktypebuiltins_vars.c gtktypebuiltins_ids.c gtktypebuiltins_evals.c gtkmarshal.h gtkmarshal.c gtkmarshalers.h gtkmarshalers.c
357
358 #
359 # Generated source files:
360 #
361 generated : $(GENERATED)
362         $(TOUCH) generated
363
364 gtk.defs : makeenums.pl gtk-boxed.defs $(gtk_public_h_sources) makefile.msc
365         $(PERL) makeenums.pl defs $(gtk_public_h_sources) >gd.tmp
366         copy gd.tmp+gtk-boxed.defs gtk.defs
367         @erase gd.tmp
368
369 # generate type identifier header (GTK_TYPE_WIDGET_FLAGS)
370 gtktypebuiltins.h: gtk.defs maketypes.awk
371         $(AWK) -f maketypes.awk gtk.defs macros >gtktypebuiltins.h
372
373 # generate type identifier variables (GTK_TYPE_WIDGET_FLAGS)
374 gtktypebuiltins_vars.c: gtk.defs maketypes.awk
375         $(AWK) -f maketypes.awk gtk.defs variables >gtktypebuiltins_vars.c
376
377 # generate type entries for type-id registration
378 gtktypebuiltins_ids.c: gtk.defs maketypes.awk
379         $(AWK) -f maketypes.awk gtk.defs entries >gtktypebuiltins_ids.c
380
381 # generate enum value arrays
382 gtktypebuiltins_evals.c: makeenums.pl gtk.defs
383         $(PERL) makeenums.pl arrays $(gtk_public_h_sources) $(gdk_headers) >gtktypebuiltins_evals.c
384
385 # private marshalers
386 gtkmarshalers.h : gtkmarshalers.list
387         $(GLIB)\gobject\glib-genmarshal --prefix=_gtk_marshal gtkmarshalers.list --header >>gtkmarshalers.h
388
389 gtkmarshalers.c : gtkmarshalers.list
390         $(GLIB)\gobject\glib-genmarshal --prefix=_gtk_marshal gtkmarshalers.list --body >gtkmarshalers.c
391
392 # public, deprecated marshalers
393 gtkmarshal.h : gtkmarshal.list
394         echo #ifndef GTK_DISABLE_DEPRECATED >gtkmarshal.h
395         $(GLIB)\gobject\glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --header >>gtkmarshal.h
396         echo #endif /* GTK_DISABLE_DEPRECATED */ >>gtkmarshal.h
397
398 gtkmarshal.c : gtkmarshal.list
399         $(GLIB)\gobject\glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --body >gtkmarshal.c
400
401 gtksignal.obj : gtksignal.c gtkmarshal.c gtkmarshal.h
402         $(CC) $(CFLAGS) -GD -c -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" gtksignal.c
403
404 #
405 # Linking:
406 #
407 gtk-win32-$(GTK_VER).dll : $(gtk_OBJECTS) gtk.def
408         $(CC) $(CFLAGS) -LD -Fm -Fegtk-win32-$(GTK_VER).dll $(gtk_OBJECTS) $(GDK_LIBS) $(GDK_PIXBUF_LIBS) $(PANGO_LIBS) $(INTL_LIBS) $(GLIB_LIBS) gdi32.lib user32.lib advapi32.lib wsock32.lib $(LDFLAGS) /def:gtk.def
409
410 gtk-win32-$(GTK_VER)s.lib : $(gtk_OBJECTS)
411         lib /out:gtk-win32-$(GTK_VER)s.lib $(gtk_OBJECTS)
412
413 gtk-query-immodules-$(GTK_VER).exe : queryimmodules.obj
414         $(CC) $(CFLAGS) -Fe$@ queryimmodules.obj $(GTK_LIBS) $(GLIB_LIBS) $(PANGO_LIBS) $(LDFLAGS)
415
416 gtk-x11-$(GTK_VER).dll : $(gtk_OBJECTS) gtk.def
417         $(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
418
419 # General rule for compiling the objects into the DLL
420 .c.obj :
421         $(CC) $(CFLAGS) -GD -c -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" $<
422
423 $(EXAMPLE).obj : ..\examples\$(EXAMPLE)\$(EXAMPLE).c
424         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"$(EXAMPLE)\" ..\examples\$(EXAMPLE)\$(EXAMPLE).c
425
426 $(EXAMPLE).exe : $(EXAMPLE).obj
427         $(CC) $(CFLAGS) $(EXAMPLE).obj $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS)
428
429 makefile.msc: makefile.msc.in
430         sed -e s,@GTK[_]MAJOR_VERSION@,@GTK_MAJOR_VERSION@, \
431             -e s,@GTK[_]MINOR_VERSION@,@GTK_MINOR_VERSION@, \
432             -e 's,@GTK[_]VERSION@,@GTK_VERSION@,' \
433             -e 's,@GDK_PIXBUF[_]MAJOR@,@GDK_PIXBUF_MAJOR@,' \
434             -e 's,@GDK_PIXBUF[_]MINOR@,@GDK_PIXBUF_MINOR@,'  <makefile.msc.in >$@