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