*** empty log message ***
[wxWidgets.git] / src / os2 / makefile.va
1 #
2 # File:      makefile.va
3 # Author:    Dave Webster
4 # Created:   1999
5 # Updated:
6 # Copyright: (c) 1999, Dave Webster
7 #
8 # "%W% %G%"
9 #
10 # Makefile : Builds wxWindows library wx.lib for VisualAge C++
11 # Arguments:
12 #
13 # FINAL=1 argument to nmake to build version with no debugging info.
14 # dll builds a library (wxdll.lib) suitable for creating DLLs
15 #
16 !include <..\makeva.env>
17
18 THISDIR=$(WXWIN)\src\os2
19
20 !if "$(WXMAKINGDLL)" == "1"
21 LIBTARGET=$(WXDIR)\lib\$(WXLIBNAME).dll
22 DUMMYOBJ=$D\dummydll.obj
23 !else
24 LIBTARGET=$(WXLIB)
25 DUMMYOBJ=$D\dummy.obj
26 !endif
27
28 # Please set these according to the settings in setup.h, so we can include
29 # the appropriate libraries in wx.lib
30
31 # This one overrides the others, to be consistent with the settings in wx_setup.h
32 MINIMAL_WXWINDOWS_SETUP=0
33
34 PERIPH_LIBS=
35 PERIPH_TARGET=
36 PERIPH_CLEAN_TARGET=
37
38 # These are absolute paths, so that the compiler
39 # generates correct __FILE__ symbols for debugging.
40 # Otherwise you don't be able to double-click on a memory
41 # error to load that file.
42 GENDIR=$(WXDIR)\src\generic
43 COMMDIR=$(WXDIR)\src\common
44 OS2DIR=$(WXDIR)\src\os2
45 HTMLDIR = $(WXDIR)\src\html
46
47 {..\generic}.cpp{..\generic\$D}.obj:
48     @echo $<
49     icc @<<
50 $(CPPFLAGS) /Fo$@ /Tp $<
51 <<
52
53 {..\common}.cpp{..\common\$D}.obj:
54     @echo $<
55     icc @<<
56 $(CPPFLAGS) /Fo$@ /Tp $<
57 <<
58
59 {..\os2}.cpp{..\os2\$D}.obj:
60     icc @<<
61 $(CPPFLAGS) /Fo$@ /Tp $<
62 <<
63
64 {..\html}.cpp{..\html\$D}.obj:
65     icc @<<
66 $(CPPFLAGS) /Fo$@ /Tp $<
67 <<
68
69 GENERICOBJS= \
70   ..\generic\$D\choicdgg.obj \
71   ..\generic\$D\gridg.obj \
72   ..\generic\$D\laywin.obj \
73   ..\generic\$D\panelg.obj \
74   ..\generic\$D\progdlgg.obj \
75   ..\generic\$D\prop.obj \
76   ..\generic\$D\propform.obj \
77   ..\generic\$D\proplist.obj \
78   ..\generic\$D\sashwin.obj \
79   ..\generic\$D\scrolwin.obj \
80   ..\generic\$D\splitter.obj \
81   ..\generic\$D\statusbr.obj \
82   ..\generic\$D\tabg.obj \
83   ..\generic\$D\textdlgg.obj \
84   ..\generic\$D\extdlgg.obj \
85   ..\generic\$D\tipdlg.obj \
86   ..\generic\$D\busyinfo.obj
87
88 #  ..\generic\$D\imaglist.obj \
89 #  ..\generic\$D\treectrl.obj \
90 #  ..\generic\$D\listctrl.obj \
91 #  ..\generic\$D\notebook.obj \
92
93 # These are generic things that don't need to be compiled on MSW,
94 # but sometimes it's useful to do so for testing purposes.
95 NONESSENTIALOBJS= \
96   ..\generic\$D\printps.obj \
97   ..\generic\$D\prntdlgg.obj \
98   ..\generic\$D\msgdlgg.obj \
99   ..\generic\$D\helpxlp.obj \
100   ..\generic\$D\colrdlgg.obj \
101   ..\generic\$D\fontdlgg.obj
102
103 COMMONOBJS = \
104   ..\common\$D\cmndata.obj \
105   ..\common\$D\config.obj \
106   ..\common\$D\dcbase.obj \
107   ..\common\$D\db.obj \
108   ..\common\$D\dbtable.obj \
109   ..\common\$D\docview.obj \
110   ..\common\$D\docmdi.obj \
111   ..\common\$D\dynarray.obj \
112   ..\common\$D\dynlib.obj \
113   ..\common\$D\event.obj \
114   ..\common\$D\file.obj \
115   ..\common\$D\filefn.obj \
116   ..\common\$D\fileconf.obj \
117   ..\common\$D\framecmn.obj \
118   ..\common\$D\ftp.obj \
119   ..\common\$D\gdicmn.obj \
120   ..\common\$D\image.obj \
121   ..\common\$D\imagbmp.obj \
122   ..\common\$D\imagjpeg.obj \
123   ..\common\$D\imagpng.obj \
124   ..\common\$D\imaggif.obj \
125   ..\common\$D\intl.obj \
126   ..\common\$D\ipcbase.obj \
127   ..\common\$D\helpbase.obj \
128   ..\common\$D\layout.obj \
129   ..\common\$D\log.obj \
130   ..\common\$D\memory.obj \
131   ..\common\$D\mimetype.obj \
132   ..\common\$D\module.obj \
133   ..\common\$D\odbc.obj \
134   ..\common\$D\object.obj \
135   ..\common\$D\prntbase.obj \
136   ..\common\$D\resource.obj \
137   ..\common\$D\tbarbase.obj \
138   ..\common\$D\tbarsmpl.obj \
139   ..\common\$D\textfile.obj \
140   ..\common\$D\timercmn.obj \
141   ..\common\$D\utilscmn.obj \
142   ..\common\$D\validate.obj \
143   ..\common\$D\valgen.obj \
144   ..\common\$D\valtext.obj \
145   ..\common\$D\date.obj \
146   ..\common\$D\hash.obj \
147   ..\common\$D\list.obj \
148   ..\common\$D\paper.obj \
149   ..\common\$D\string.obj \
150   ..\common\$D\socket.obj \
151   ..\common\$D\sckaddr.obj \
152   ..\common\$D\sckint.obj \
153   ..\common\$D\sckfile.obj \
154   ..\common\$D\sckipc.obj \
155   ..\common\$D\sckstrm.obj \
156   ..\common\$D\url.obj \
157   ..\common\$D\http.obj \
158   ..\common\$D\protocol.obj \
159   ..\common\$D\time.obj \
160   ..\common\$D\tokenzr.obj \
161   ..\common\$D\wxexpr.obj \
162   ..\common\$D\y_tab.obj \
163   ..\common\$D\extended.obj \
164   ..\common\$D\process.obj \
165   ..\common\$D\wfstream.obj \
166   ..\common\$D\mstream.obj \
167   ..\common\$D\zstream.obj \
168   ..\common\$D\stream.obj \
169   ..\common\$D\datstrm.obj \
170   ..\common\$D\objstrm.obj \
171   ..\common\$D\variant.obj \
172   ..\common\$D\dlgcmn.obj \
173   ..\common\$D\wincmn.obj \
174   ..\common\$D\txtstrm.obj \
175   ..\common\$D\wxchar.obj \
176   ..\common\$D\unzip.obj \
177   ..\common\$D\zipstream.obj \
178   ..\common\$D\filesys.obj \
179   ..\common\$D\fs_inet.obj \
180   ..\common\$D\fs_zip.obj
181
182
183 OS2OBJS = \
184   ..\os2\$D\accel.obj \
185   ..\os2\$D\app.obj \
186   ..\os2\$D\bitmap.obj \
187   ..\os2\$D\bmpbuttn.obj \
188   ..\os2\$D\brush.obj \
189   ..\os2\$D\button.obj \
190   ..\os2\$D\checkbox.obj \
191   ..\os2\$D\checklst.obj \
192   ..\os2\$D\choice.obj \
193   ..\os2\$D\clipbrd.obj \
194   ..\os2\$D\dcprint.obj \
195   ..\os2\$D\dcscreen.obj \
196   ..\os2\$D\dde.obj \
197   ..\os2\$D\dialog.obj \
198   ..\os2\$D\dib.obj \
199   ..\os2\$D\dibutils.obj \
200   ..\os2\$D\dirdlg.obj \
201   ..\os2\$D\filedlg.obj \
202   ..\os2\$D\font.obj \
203   ..\os2\$D\fontdlg.obj \
204   ..\os2\$D\frame.obj \
205   ..\os2\$D\gauge.obj \
206   ..\os2\$D\gdiobj.obj \
207   ..\os2\$D\helpwin.obj \
208   ..\os2\$D\icon.obj \
209   ..\os2\$D\iniconf.obj \
210   ..\os2\$D\joystick.obj \
211   ..\os2\$D\imaglist.obj \
212   ..\os2\$D\listbox.obj \
213   ..\os2\$D\listctrl.obj \
214   ..\os2\$D\main.obj \
215   ..\os2\$D\mdi.obj \
216   ..\os2\$D\menu.obj \
217   ..\os2\$D\menuitem.obj \
218   ..\os2\$D\metafile.obj \
219   ..\os2\$D\minifram.obj \
220   ..\os2\$D\msgdlg.obj \
221   ..\os2\$D\nativdlg.obj \
222   ..\os2\$D\notebook.obj \
223   ..\os2\$D\ownerdrw.obj \
224   ..\os2\$D\palette.obj \
225   ..\os2\$D\pen.obj \
226   ..\os2\$D\penwin.obj \
227   ..\os2\$D\pnghand.obj \
228   ..\os2\$D\printdlg.obj \
229   ..\os2\$D\printwin.obj \
230   ..\os2\$D\radiobox.obj \
231   ..\os2\$D\radiobut.obj \
232   ..\os2\$D\region.obj \
233   ..\os2\$D\registry.obj \
234   ..\os2\$D\regconf.obj \
235   ..\os2\$D\scrolbar.obj \
236   ..\os2\$D\settings.obj \
237   ..\os2\$D\slidrmsw.obj \
238   ..\os2\$D\slider95.obj \
239   ..\os2\$D\spinbutt.obj \
240   ..\os2\$D\statbmp.obj \
241   ..\os2\$D\statbox.obj \
242   ..\os2\$D\statusbr.obj \
243   ..\os2\$D\stattext.obj \
244   ..\os2\$D\tabctrl.obj \
245   ..\os2\$D\taskbar.obj \
246   ..\os2\$D\tbarmsw.obj \
247   ..\os2\$D\textctrl.obj \
248   ..\os2\$D\thread.obj \
249   ..\os2\$D\timer.obj \
250   ..\os2\$D\toolbar.obj \
251   ..\os2\$D\tooltip.obj \
252   ..\os2\$D\treectrl.obj \
253   ..\os2\$D\utils.obj \
254   ..\os2\$D\utilsexc.obj \
255   ..\os2\$D\wave.obj \
256   ..\os2\$D\window.obj \
257   ..\os2\$D\xpmhand.obj \
258
259 HTMLOBJS = \
260   ..\html\$D\htmlcell.obj \
261   ..\html\$D\htmlfilter.obj \
262   ..\html\$D\htmlhelp.obj \
263   ..\html\$D\htmlhelp_io.obj \
264   ..\html\$D\htmlparser.obj \
265   ..\html\$D\htmltag.obj \
266   ..\html\$D\htmlwin.obj \
267   ..\html\$D\htmlwinparser.obj \
268   ..\html\$D\mod_fonts.obj \
269   ..\html\$D\mod_hline.obj \
270   ..\html\$D\mod_image.obj \
271   ..\html\$D\mod_layout.obj \
272   ..\html\$D\mod_links.obj \
273   ..\html\$D\mod_list.obj \
274   ..\html\$D\mod_pre.obj \
275   ..\html\$D\mod_tables.obj \
276   ..\html\$D\search.obj
277
278 # Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc.
279 OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(NONESSENTIALOBJS) $(OS2OBJS)
280
281 # Normal, static library
282 all:    $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET)
283
284 dirs: $(OS2DIR)\$D $(COMMDIR)\$D $(GENDIR)\$D $(HTMLDIR)\$D
285
286
287 test:   $(OS2DIR)\$D\wave.obj
288 test2:  ..\common\Debug\config.obj
289
290 $D:
291     md $D
292
293 $(COMMDIR)\$D:
294     md $(COMMDIR)\$D
295
296 $(OS2DIR)\$D:
297     md $(OS2DIR)\$D
298
299 $(GENDIR)\$D:
300     md $(GENDIR)\$D
301
302 $(HTMLDIR)\$D:
303     md $(HTMLDIR)\$D
304
305 # wxWindows library as DLL
306 dll:
307         nmake -f makefile.va all FINAL=$(FINAL) DLL=1 WXMAKINGDLL=1 NEW_WXLIBNAME=$(NEW_WXLIBNAME)
308
309 cleandll:
310         nmake -f makefile.va clean FINAL=$(FINAL) DLL=1 WXMAKINGDLL=1 NEW_WXLIBNAME=$(NEW_WXLIBNAME)
311
312 # wxWindows + app as DLL. Only affects main.cpp.
313 dllapp:
314         nmake -f makefile.va all FINAL=$(FINAL) DLL=1
315
316 # wxWindows + app as DLL, for Netscape plugin - remove DllMain.
317 dllnp:
318         nmake -f makefile.va all FINAL=$(FINAL) DLL=1
319
320 # Use this to make dummy.obj and generate a PCH.
321 # You might use the dll target, then the pch target, in order to
322 # generate a DLL, then a PCH/dummy.obj for compiling your applications with.
323 #
324 # Explanation: Normally, when compiling a static version of wx.lib, your dummy.obj/PCH
325 # are associated with wx.lib. When using a DLL version of wxWindows, however,
326 # the DLL is compiled without a PCH, so you only need it for compiling the app.
327 # In fact headers are compiled differently depending on whether a DLL is being made
328 # or an app is calling the DLL exported functionality (WXDLLEXPORT is different
329 # in each case) so you couldn't use the same PCH.
330 pch:
331         nmake -f makefile.va pch1 WXUSINGDLL=1 FINAL=$(FINAL) NEW_WXLIBNAME=$(NEW_WXLIBNAME)
332
333 pch1:   dirs $(DUMMYOBJ)
334     echo $(DUMMYOBJ)
335
336 !if "$(WXMAKINGDLL)" != "1"
337
338 ### Static library
339
340 $(WXDIR)\lib\wx.lib: $D\dummy.obj $(OBJECTS) $(PERIPH_LIBS)
341  del $(LIBTARGET)
342  ilib $(LINKFLAGS) $@ @<<
343     $**
344 <<
345
346 !else
347
348 # Update the import library
349 $(WXDIR)\lib\wx200.lib: $(OBJECTS)
350     implib $(WXDIR)\lib\wx200.lib $(WXDIR)\lib\wx200.def
351
352 # Update the dynamic link library
353 $(WXDIR)\lib\wx200.dll: $(OBJECTS) $(WXDIR)\lib\wx200.lib
354     icc @<<
355     /B" $(LINKFLAGS)" /Fe$@
356     $(LIBS)
357     $(OBJECTS)
358     $(WXDIR)\lib\wx200.def
359 <<
360
361 !endif
362
363 $D\dummy.obj: dummy.$(SRCSUFF) $(WXDIR)\include\wx\wx.h $(WXDIR)\include\wx\os2\setup.h
364         icc $(CPPFLAGS) $(MAKEPRECOMP) /Fo$D\dummy.obj /Tp dummy.cpp
365
366 $D\dummydll.obj: dummydll.$(SRCSUFF) $(WXDIR)\include\wx\wx.h $(WXDIR)\include\wx\os2\setup.h
367         icc @<<
368 $(CPPFLAGS) $(MAKEPRECOMP) /Fo$D\dummydll.obj /c /Tp dummydll.cpp
369 <<
370
371 # If taking wxWindows from CVS, setup.h doesn't exist yet.
372 $(WXDIR)\include\wx\os2\setup.h: $(WXDIR)\include\wx\os2\setup0.h
373     copy "$(WXDIR)"\include\wx\os2\setup.h "$(WXDIR)"\include\wx\os2\setup.bak
374     copy "$(WXDIR)"\include\wx\os2\setup0.h "$(WXDIR)"\include\wx\os2\setup.h
375
376 ..\common\$D\extended.obj:     ..\common\extended.c
377         icc @<<
378 $(CPPFLAGS2) /Fo$@ $(COMMDIR)\extended.c
379 <<
380
381 ..\common\$D\y_tab.obj:     ..\common\y_tab.c ..\common\lex_yy.c
382         icc @<<
383 $(CPPFLAGS2) /DUSE_DEFINE /DYY_USE_PROTOS /Fo$@  ..\common\y_tab.c
384 <<
385
386 ..\common\y_tab.c:     ..\common\dosyacc.c
387         copy "..\common"\dosyacc.c "..\common"\y_tab.c
388
389 ..\common\lex_yy.c:    ..\common\doslex.c
390     copy "..\common"\doslex.c "..\common"\lex_yy.c
391
392 $(OBJECTS): $(WXDIR)/include/wx/setup.h
393
394 ..\common\$D\unzip.obj:     ..\common\unzip.c
395         icc @<<
396 $(CPPFLAGS2) /Fo$@ $(COMMDIR)\unzip.c
397 <<
398
399 clean: $(PERIPH_CLEAN_TARGET) clean_png clean_zlib clean_jpeg clean_xpm
400         -erase $(LIBTARGET)
401         -erase ..\..\lib\wx200.dll
402         -erase ..\..\lib\wx200.lib
403         -erase $(GENDIR)\$D\*.obj
404         -erase $(COMMDIR)\$D\*.obj
405         -erase $(COMMDIR)\\y_tab.c
406         -erase $(COMMDIR)\lex_yy.c
407         -erase $(OS2DIR)\$D\*.obj
408         -rmdir $(D)
409         -rmdir ole\$(D)
410         -rmdir ..\generic\$(D)
411         -rmdir ..\common\$(D)
412
413 cleanall: clean
414