]> Pileus Git - ~andy/gtk/blob - gtk/makefile.msc
d1066dd280472c4530c6d9bb5a465e7dc9943eef
[~andy/gtk] / gtk / makefile.msc
1 ## Makefile for building the gtk DLL with Microsoft C
2 ## Use: nmake -f makefile.msc
3
4 # Change this to wherever you want to install the DLLs. This directory
5 # should be in your PATH.
6 BIN = C:\bin
7
8 # This is the location of pthreads for Win32, 
9 # see http://sourceware.cygnus.com/pthreads-win32/
10 PTHREADS = ..\..\pthreads-snap-1999-04-07
11 PTHREAD_LIB = $(PTHREADS)\pthread.lib
12 PTHREAD_INC = -I $(PTHREADS)
13
14 # Full optimization:
15 OPTIMIZE = -Ox
16 # Debugging:
17 #OPTIMIZE = -Zi
18
19 ################################################################
20
21 # Nothing much configurable below
22
23 # cl -? describes the options
24 # Some files use near as an identifier
25 CC = cl -G5 -GF $(OPTIMIZE) -W3 -MD -DHAVE_CONFIG_H -nologo -Dnear=xxnear
26
27 # Perl and awk are needed to generate some source files.
28 # These generated source files are distribuyted with the Win32 GTk+ source
29 # distributions, so don't worry if you don't have perl and awk.
30 PERL = perl
31 AWK = awk
32
33 LDFLAGS = /link /machine:ix86 # /debug
34 INSTALL = copy
35 TOUCH = copy makefile.msc+nul
36
37 GLIB_VER=1.3
38 GTK_VER=1.3
39
40 GDKSYSDEP = ..\gdk\win32
41 GLIB = ..\..\glib
42
43 CFLAGS = -I. -I.. -I$(GDKSYSDEP) -I$(GLIB) -I$(GLIB)\gmodule -DGTK_DISABLE_COMPAT_H
44
45 all : \
46         ..\config.h     \
47         gtkcompat.h     \
48         generated       \
49         gtk-$(GTK_VER).dll\
50         testdnd.exe     \
51         testgtk.exe     \
52         testinput.exe   \
53         testrgb.exe     \
54         testselection.exe \
55         simple.exe
56
57 install : all
58         $(INSTALL) gtk-$(GTK_VER).dll $(BIN)
59         $(TOUCH) install
60
61 gtk_OBJECTS = \
62         fnmatch.obj     \
63         gtkaccelgroup.obj \
64         gtkaccellabel.obj \
65         gtkadjustment.obj \
66         gtkalignment.obj \
67         gtkarg.obj      \
68         gtkarrow.obj    \
69         gtkaspectframe.obj \
70         gtkbbox.obj     \
71         gtkbin.obj      \
72         gtkbindings.obj \
73         gtkbox.obj      \
74         gtkbutton.obj   \
75         gtkcalendar.obj \
76         gtkcheckbutton.obj \
77         gtkcheckmenuitem.obj \
78         gtkclist.obj    \
79         gtkcolorsel.obj \
80         gtkcombo.obj    \
81         gtkcontainer.obj \
82         gtkctree.obj    \
83         gtkcurve.obj    \
84         gtkdata.obj     \
85         gtkdialog.obj   \
86         gtkdnd.obj      \
87         gtkdrawingarea.obj \
88         gtkeditable.obj \
89         gtkentry.obj    \
90         gtkeventbox.obj \
91         gtkfilesel.obj  \
92         gtkfixed.obj    \
93         gtkfontsel.obj  \
94         gtkframe.obj    \
95         gtkgamma.obj    \
96         gtkgc.obj       \
97         gtkhandlebox.obj \
98         gtkhbbox.obj    \
99         gtkhbox.obj     \
100         gtkhpaned.obj   \
101         gtkhruler.obj   \
102         gtkhscale.obj   \
103         gtkhscrollbar.obj \
104         gtkhseparator.obj \
105         gtkimage.obj    \
106         gtkinputdialog.obj \
107         gtkinvisible.obj \
108         gtkitem.obj     \
109         gtkitemfactory.obj \
110         gtklabel.obj    \
111         gtklayout.obj   \
112         gtklist.obj     \
113         gtklistitem.obj \
114         gtkmain.obj     \
115         gtkmarshal.obj  \
116         gtkmenu.obj     \
117         gtkmenubar.obj  \
118         gtkmenufactory.obj \
119         gtkmenuitem.obj \
120         gtkmenushell.obj \
121         gtkmisc.obj     \
122         gtknotebook.obj \
123         gtkobject.obj   \
124         gtkoptionmenu.obj \
125         gtkpacker.obj   \
126         gtkpaned.obj    \
127         gtkpixmap.obj   \
128         gtkplug.obj     \
129         gtkpreview.obj  \
130         gtkprogress.obj \
131         gtkprogressbar.obj \
132         gtkradiobutton.obj \
133         gtkradiomenuitem.obj \
134         gtkrange.obj    \
135         gtkrc.obj       \
136         gtkruler.obj    \
137         gtkscale.obj    \
138         gtkscrollbar.obj \
139         gtkscrolledwindow.obj \
140         gtkselection.obj \
141         gtkseparator.obj \
142         gtksignal.obj   \
143         gtksocket.obj   \
144         gtkspinbutton.obj \
145         gtkstatusbar.obj \
146         gtkstyle.obj    \
147         gtktable.obj    \
148         gtktearoffmenuitem.obj \
149         gtktext.obj     \
150         gtkthemes.obj   \
151         gtktipsquery.obj \
152         gtktogglebutton.obj \
153         gtktoolbar.obj  \
154         gtktooltips.obj \
155         gtktree.obj     \
156         gtktreeitem.obj \
157         gtktypeutils.obj\
158         gtkvbbox.obj    \
159         gtkvbox.obj     \
160         gtkviewport.obj \
161         gtkvpaned.obj   \
162         gtkvruler.obj   \
163         gtkvscale.obj   \
164         gtkvscrollbar.obj \
165         gtkvseparator.obj \
166         gtkwidget.obj   \
167         gtkwindow.obj
168
169 # Source headers which are non-autogenerated headers
170 source_headers = \
171         gtk.h                   \
172         gtkaccelgroup.h         \
173         gtkaccellabel.h         \
174         gtkadjustment.h         \
175         gtkalignment.h          \
176         gtkarg.h                \
177         gtkarrow.h              \
178         gtkaspectframe.h        \
179         gtkbin.h                \
180         gtkbindings.h           \
181         gtkbbox.h               \
182         gtkbox.h                \
183         gtkbutton.h             \
184         gtkcalendar.h           \
185         gtkcheckbutton.h        \
186         gtkcheckmenuitem.h      \
187         gtkclist.h              \
188         gtkcolorsel.h           \
189         gtkcombo.h              \
190         gtkcompat.h             \
191         gtkcontainer.h          \
192         gtkctree.h              \
193         gtkcurve.h              \
194         gtkdata.h               \
195         gtkdebug.h              \
196         gtkdialog.h             \
197         gtkdnd.h                \
198         gtkdrawingarea.h        \
199         gtkeditable.h           \
200         gtkentry.h              \
201         gtkenums.h              \
202         gtkeventbox.h           \
203         gtkfilesel.h            \
204         gtkfixed.h              \
205         gtkfontsel.h            \
206         gtkframe.h              \
207         gtkgamma.h              \
208         gtkgc.h                 \
209         gtkhandlebox.h          \
210         gtkhbbox.h              \
211         gtkhbox.h               \
212         gtkhpaned.h             \
213         gtkhruler.h             \
214         gtkhscale.h             \
215         gtkhscrollbar.h         \
216         gtkhseparator.h         \
217         gtkimage.h              \
218         gtkinputdialog.h        \
219         gtkintl.h               \
220         gtkinvisible.h          \
221         gtkitem.h               \
222         gtkitemfactory.h        \
223         gtklabel.h              \
224         gtklayout.h             \
225         gtklist.h               \
226         gtklistitem.h           \
227         gtkmain.h               \
228         gtkmenu.h               \
229         gtkmenubar.h            \
230         gtkmenufactory.h        \
231         gtkmenuitem.h           \
232         gtkmenushell.h          \
233         gtkmisc.h               \
234         gtknotebook.h           \
235         gtkobject.h             \
236         gtkoptionmenu.h         \
237         gtkpacker.h             \
238         gtkpaned.h              \
239         gtkpixmap.h             \
240         gtkplug.h               \
241         gtkpreview.h            \
242         gtkprivate.h            \
243         gtkprogress.h           \
244         gtkprogressbar.h        \
245         gtkradiobutton.h        \
246         gtkradiomenuitem.h      \
247         gtkrange.h              \
248         gtkrc.h                 \
249         gtkruler.h              \
250         gtkscale.h              \
251         gtkscrollbar.h          \
252         gtkscrolledwindow.h     \
253         gtkselection.h          \
254         gtkseparator.h          \
255         gtksignal.h             \
256         gtksocket.h             \
257         gtkspinbutton.h         \
258         gtkstyle.h              \
259         gtkstatusbar.h          \
260         gtktable.h              \
261         gtktearoffmenuitem.h    \
262         gtktext.h               \
263         gtkthemes.h             \
264         gtktipsquery.h          \
265         gtktogglebutton.h       \
266         gtktoolbar.h            \
267         gtktooltips.h           \
268         gtktree.h               \
269         gtktreeitem.h           \
270         gtktypeutils.h          \
271         gtkvbbox.h              \
272         gtkvbox.h               \
273         gtkviewport.h           \
274         gtkvpaned.h             \
275         gtkvruler.h             \
276         gtkvscale.h             \
277         gtkvscrollbar.h         \
278         gtkvseparator.h         \
279         gtkwidget.h             \
280         gtkwindow.h
281
282 # More headers to use when autogenerating.
283 gdk_headers = \
284         ..\gdk\gdktypes.h \
285         ..\gdk\gdkrgb.h
286
287 ..\config.h : ..\config.h.win32
288         copy ..\config.h.win32 ..\config.h
289
290 gtkcompat.h : gtkcompat.h.win32
291         copy gtkcompat.h.win32 gtkcompat.h
292
293 #
294 # Generated source files:
295 #
296 generated : gtk.defs gtktypebuiltins.h gtktypebuiltins_vars.c gtktypebuiltins_ids.c gtktypebuiltins_evals.c gtkmarshal.h gtkmarshal.c
297         $(TOUCH) generated
298
299 gtk.defs : makeenums.pl gtk-boxed.defs $(source_headers) $(gdk_headers)
300         $(PERL) makeenums.pl defs $(source_headers) $(gdk_headers) >gd.tmp
301         copy gd.tmp+gtk-boxed.defs gtk.defs
302         @erase gd.tmp
303
304 # generate type identifier header (GTK_TYPE_WIDGET_FLAGS)
305 gtktypebuiltins.h: gtk.defs maketypes.awk
306         $(AWK) -f maketypes.awk gtk.defs macros >gtktypebuiltins.h
307
308 # generate type identifier variables (GTK_TYPE_WIDGET_FLAGS)
309 gtktypebuiltins_vars.c: gtk.defs maketypes.awk
310         $(AWK) -f maketypes.awk gtk.defs variables >gtktypebuiltins_vars.c
311
312 # generate type entries for type-id registration
313 gtktypebuiltins_ids.c: gtk.defs maketypes.awk
314         $(AWK) -f maketypes.awk gtk.defs entries >gtktypebuiltins_ids.c
315
316 # generate enum value arrays
317 gtktypebuiltins_evals.c: makeenums.pl gtk.defs
318         $(PERL) makeenums.pl arrays $(source_headers) $(gdk_headers) >gtktypebuiltins_evals.c
319
320 gtkmarshal.h gtkmarshal.c : gtkmarshal.list genmarshal.pl
321         $(PERL) genmarshal.pl
322         del gtkmarshal.c
323         rename s-gmc gtkmarshal.c
324         del gtkmarshal.h
325         rename s-gmh gtkmarshal.h
326
327 #
328 # Linking:
329 #
330 gtk-$(GTK_VER).dll : $(gtk_OBJECTS) gtk.def
331         $(CC) $(CFLAGS) -LD -Fegtk-$(GTK_VER).dll $(gtk_OBJECTS) $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(GLIB)\gmodule-$(GLIB_VER).lib gdi32.lib user32.lib $(LDFLAGS) /def:gtk.def
332
333 # General rule for compiling the objects into the DLL
334 .c.obj :
335         $(CC) $(CFLAGS) -GD -c -DGTK_COMPILATION -DG_LOG_DOMAIN=\"Gtk\" $<
336
337 #
338 # Test programs:
339 #
340 testdnd.exe : gtk-$(GTK_VER).dll testdnd.obj
341         $(CC) $(CFLAGS) testdnd.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS)
342
343 # Must have separate rules for these objects that don't go in the DLL
344 testdnd.obj : testdnd.c
345         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testdnd\" testdnd.c
346
347 testgtk.exe : gtk-$(GTK_VER).dll testgtk.obj
348         $(CC) $(CFLAGS) testgtk.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS)
349
350 testgtk.obj : testgtk.c
351         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testgtk\" testgtk.c
352
353 testinput.exe : gtk-$(GTK_VER).dll testinput.obj
354         $(CC) $(CFLAGS) testinput.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS)
355
356 testinput.obj : testinput.c
357         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testinput\" testinput.c
358
359 testrgb.exe : gtk-$(GTK_VER).dll testrgb.obj
360         $(CC) $(CFLAGS) testrgb.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS)
361
362 testrgb.obj : testrgb.c
363         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testrgb\" testrgb.c
364
365 testselection.exe : gtk-$(GTK_VER).dll testselection.obj
366         $(CC) $(CFLAGS) testselection.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS)
367
368 testselection.obj : testselection.c
369         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"testselection\" testselection.c
370
371 testthreads.exe : gtk-$(GTK_VER).dll testthreads.obj
372         $(CC) $(CFLAGS) testthreads.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(GLIB)\gthread-$(GLIB_VER).lib $(PTHREAD_LIB) $(LDFLAGS)
373
374 testthreads.obj : testthreads.c
375         $(CC) $(CFLAGS) $(PTHREAD_INC) -c -DG_LOG_DOMAIN=\"testthreads\" -DUSE_PTHREADS=1 testthreads.c
376
377 simple.exe : gtk-$(GTK_VER).dll simple.obj
378         $(CC) $(CFLAGS) simple.obj gtk-$(GTK_VER).lib $(GDKSYSDEP)\gdk-$(GTK_VER).lib $(GLIB)\glib-$(GLIB_VER).lib $(LDFLAGS)
379
380 simple.obj : simple.c
381         $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"simple\" simple.c
382
383 # The clean target doesn't remove the generated sources
384 clean:
385         del *.exe
386         del *.obj
387         del *.dll
388         del *.lib
389         del *.exp
390         del *.err
391         del *.map
392         del *.sym
393         del *.lk1
394         del *.mk1
395         del *.pdb
396         del *.ilk