Updated makefiles for VisualAge C++ V3.0
[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 COMTEMPTGT1=$(WXDIR)\lib\wxcom1.lib
26 COMTEMPTGT2=$(WXDIR)\lib\wxcom2.lib
27 GENTEMPTGT=$(WXDIR)\lib\wxgen.lib
28 NONESTEMPTGT=$(WXDIR)\lib\wxnones.lib
29 OS2TEMPTGT=$(WXDIR)\lib\wxos2.lib
30 DUMMYOBJ=$D\dummy.obj
31 !endif
32
33 # Please set these according to the settings in setup.h, so we can include
34 # the appropriate libraries in wx.lib
35
36 # This one overrides the others, to be consistent with the settings in wx_setup.h
37 MINIMAL_WXWINDOWS_SETUP=0
38
39 PERIPH_LIBS=
40 PERIPH_TARGET=
41 PERIPH_CLEAN_TARGET=
42
43 # These are absolute paths, so that the compiler
44 # generates correct __FILE__ symbols for debugging.
45 # Otherwise you don't be able to double-click on a memory
46 # error to load that file.
47 GENDIR=$(WXDIR)\src\generic
48 COMMDIR=$(WXDIR)\src\common
49 OS2DIR=$(WXDIR)\src\os2
50 HTMLDIR = $(WXDIR)\src\html
51
52 {..\generic}.cpp{..\generic\$D}.obj:
53     @echo $<
54     icc @<<
55 $(CPPFLAGS) /Fo$@ /Tp $<
56 <<
57
58 {..\common}.cpp{..\common\$D}.obj:
59     @echo $<
60     icc @<<
61 $(CPPFLAGS) /Fo$@ /Tp $<
62 <<
63
64 {..\os2}.cpp{..\os2\$D}.obj:
65     @echo $<
66     icc @<<
67 $(CPPFLAGS) /Fo$@ /Tp $<
68 <<
69
70 {..\html}.cpp{..\html\$D}.obj:
71     @echo $<
72     icc @<<
73 $(CPPFLAGS) /Fo$@ /Tp $<
74 <<
75
76 GENERICOBJS= \
77   ..\generic\$D\choicdgg.obj \
78   ..\generic\$D\gridg.obj \
79   ..\generic\$D\laywin.obj \
80   ..\generic\$D\panelg.obj \
81   ..\generic\$D\progdlgg.obj \
82   ..\generic\$D\prop.obj \
83   ..\generic\$D\propform.obj \
84   ..\generic\$D\proplist.obj \
85   ..\generic\$D\sashwin.obj \
86   ..\generic\$D\scrolwin.obj \
87   ..\generic\$D\splitter.obj \
88   ..\generic\$D\statusbr.obj \
89   ..\generic\$D\tabg.obj \
90   ..\generic\$D\textdlgg.obj \
91   ..\generic\$D\tipdlg.obj \
92   ..\generic\$D\busyinfo.obj
93
94 #  ..\generic\$D\imaglist.obj \
95 #  ..\generic\$D\treectrl.obj \
96 #  ..\generic\$D\listctrl.obj \
97 #  ..\generic\$D\notebook.obj \
98
99 GENLIBOBJS= \
100   choicdgg.obj \
101   gridg.obj \
102   laywin.obj \
103   panelg.obj \
104   progdlgg.obj \
105   prop.obj \
106   propform.obj \
107   proplist.obj \
108   sashwin.obj \
109   scrolwin.obj \
110   splitter.obj \
111   statusbr.obj \
112   tabg.obj \
113   textdlgg.obj \
114   tipdlg.obj \
115   busyinfo.obj
116
117 # These are generic things that don't need to be compiled on PM,
118 # but sometimes it's useful to do so for testing purposes.
119 NONESSENTIALOBJS= \
120   ..\generic\$D\printps.obj \
121   ..\generic\$D\prntdlgg.obj \
122   ..\generic\$D\msgdlgg.obj \
123   ..\generic\$D\helpxlp.obj \
124   ..\generic\$D\colrdlgg.obj \
125   ..\generic\$D\fontdlgg.obj
126
127 COMMONOBJS = \
128   ..\common\$D\cmndata.obj \
129   ..\common\$D\config.obj \
130   ..\common\$D\dcbase.obj \
131   ..\common\$D\db.obj \
132   ..\common\$D\dbtable.obj \
133   ..\common\$D\docview.obj \
134   ..\common\$D\docmdi.obj \
135   ..\common\$D\dynarray.obj \
136   ..\common\$D\dynlib.obj \
137   ..\common\$D\event.obj \
138   ..\common\$D\file.obj \
139   ..\common\$D\filefn.obj \
140   ..\common\$D\fileconf.obj \
141   ..\common\$D\framecmn.obj \
142   ..\common\$D\ftp.obj \
143   ..\common\$D\gdicmn.obj \
144   ..\common\$D\image.obj \
145   ..\common\$D\imagbmp.obj \
146   ..\common\$D\imagjpeg.obj \
147   ..\common\$D\imagpng.obj \
148   ..\common\$D\imaggif.obj \
149   ..\common\$D\intl.obj \
150   ..\common\$D\ipcbase.obj \
151   ..\common\$D\helpbase.obj \
152   ..\common\$D\layout.obj \
153   ..\common\$D\log.obj \
154   ..\common\$D\memory.obj \
155   ..\common\$D\mimetype.obj \
156   ..\common\$D\module.obj \
157   ..\common\$D\odbc.obj \
158   ..\common\$D\object.obj \
159   ..\common\$D\prntbase.obj \
160   ..\common\$D\resource.obj \
161   ..\common\$D\tbarbase.obj \
162   ..\common\$D\tbarsmpl.obj \
163   ..\common\$D\textfile.obj \
164   ..\common\$D\timercmn.obj \
165   ..\common\$D\utilscmn.obj \
166   ..\common\$D\validate.obj \
167   ..\common\$D\valgen.obj \
168   ..\common\$D\valtext.obj \
169   ..\common\$D\date.obj \
170   ..\common\$D\hash.obj \
171   ..\common\$D\list.obj \
172   ..\common\$D\paper.obj \
173   ..\common\$D\string.obj \
174   ..\common\$D\socket.obj \
175   ..\common\$D\sckaddr.obj \
176   ..\common\$D\sckfile.obj \
177   ..\common\$D\sckipc.obj \
178   ..\common\$D\sckstrm.obj \
179   ..\common\$D\url.obj \
180   ..\common\$D\http.obj \
181   ..\common\$D\protocol.obj \
182   ..\common\$D\time.obj \
183   ..\common\$D\tokenzr.obj \
184   ..\common\$D\wxexpr.obj \
185   ..\common\$D\y_tab.obj \
186   ..\common\$D\extended.obj \
187   ..\common\$D\process.obj \
188   ..\common\$D\wfstream.obj \
189   ..\common\$D\mstream.obj \
190   ..\common\$D\zstream.obj \
191   ..\common\$D\stream.obj \
192   ..\common\$D\datstrm.obj \
193   ..\common\$D\objstrm.obj \
194   ..\common\$D\variant.obj \
195   ..\common\$D\dlgcmn.obj \
196   ..\common\$D\wincmn.obj \
197   ..\common\$D\txtstrm.obj \
198   ..\common\$D\wxchar.obj \
199   ..\common\$D\unzip.obj \
200   ..\common\$D\filesys.obj \
201   ..\common\$D\fs_inet.obj \
202   ..\common\$D\fs_zip.obj
203
204 COMLIBOBJS1 = \
205   cmndata.obj \
206   config.obj \
207   dcbase.obj \
208   db.obj \
209   dbtable.obj \
210   docview.obj \
211   docmdi.obj \
212   dynarray.obj \
213   dynlib.obj \
214   event.obj \
215   file.obj \
216   filefn.obj \
217   fileconf.obj \
218   framecmn.obj \
219   ftp.obj \
220   gdicmn.obj \
221   image.obj \
222   imagbmp.obj \
223   imagjpeg.obj \
224   imagpng.obj \
225   imaggif.obj \
226   intl.obj \
227   ipcbase.obj \
228   helpbase.obj \
229   layout.obj \
230   log.obj \
231   memory.obj \
232   mimetype.obj \
233   module.obj \
234   odbc.obj \
235   object.obj \
236   prntbase.obj \
237   resource.obj \
238   tbarbase.obj \
239   tbarsmpl.obj \
240   textfile.obj \
241   timercmn.obj \
242   utilscmn.obj \
243   validate.obj \
244   valgen.obj \
245   valtext.obj \
246   date.obj \
247   hash.obj \
248   list.obj \
249   paper.obj
250
251 COMLIBOBJS2 = \
252   string.obj \
253   socket.obj \
254   sckaddr.obj \
255   sckfile.obj \
256   sckipc.obj \
257   sckstrm.obj \
258   url.obj \
259   http.obj \
260   protocol.obj \
261   time.obj \
262   tokenzr.obj \
263   wxexpr.obj \
264   y_tab.obj \
265   extended.obj \
266   process.obj \
267   wfstream.obj \
268   mstream.obj \
269   zstream.obj \
270   stream.obj \
271   datstrm.obj \
272   objstrm.obj \
273   variant.obj \
274   dlgcmn.obj \
275   wincmn.obj \
276   txtstrm.obj \
277   wxchar.obj \
278   unzip.obj \
279   filesys.obj \
280   fs_inet.obj \
281   fs_zip.obj
282
283 OS2OBJS = \
284   ..\os2\$D\dc.obj \
285   ..\os2\$D\dialog.obj \
286   ..\os2\$D\frame.obj \
287   ..\os2\$D\window.obj \
288
289 HTMLOBJS = \
290   ..\html\$D\htmlcell.obj \
291   ..\html\$D\htmlfilter.obj \
292   ..\html\$D\htmlhelp.obj \
293   ..\html\$D\htmlhelp_io.obj \
294   ..\html\$D\htmlparser.obj \
295   ..\html\$D\htmltag.obj \
296   ..\html\$D\htmlwin.obj \
297   ..\html\$D\htmlwinparser.obj \
298   ..\html\$D\mod_fonts.obj \
299   ..\html\$D\mod_hline.obj \
300   ..\html\$D\mod_image.obj \
301   ..\html\$D\mod_layout.obj \
302   ..\html\$D\mod_links.obj \
303   ..\html\$D\mod_list.obj \
304   ..\html\$D\mod_pre.obj \
305   ..\html\$D\mod_tables.obj \
306   ..\html\$D\search.obj
307
308 # Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc.
309 OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(NONESSENTIALOBJS) $(OS2OBJS)
310
311 # Normal, static library
312 all:    $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET)
313
314 dirs: $(OS2DIR)\$D $(COMMDIR)\$D $(GENDIR)\$D $(HTMLDIR)\$D
315
316
317 test:   $(OS2DIR)\$D\wave.obj
318 test2:  ..\common\Debug\config.obj
319
320 $D:
321     md $D
322
323 $(COMMDIR)\$D:
324     md $(COMMDIR)\$D
325
326 $(OS2DIR)\$D:
327     md $(OS2DIR)\$D
328
329 $(GENDIR)\$D:
330     md $(GENDIR)\$D
331
332 $(HTMLDIR)\$D:
333     md $(HTMLDIR)\$D
334
335 $(COMLIBOBJS1):
336   copy ..\common\$D\cmndata.obj
337   copy ..\common\$D\config.obj
338   copy ..\common\$D\dcbase.obj
339   copy ..\common\$D\db.obj
340   copy ..\common\$D\dbtable.obj
341   copy ..\common\$D\docview.obj
342   copy ..\common\$D\docmdi.obj
343   copy ..\common\$D\dynarray.obj
344   copy ..\common\$D\dynlib.obj
345   copy ..\common\$D\event.obj
346   copy ..\common\$D\file.obj
347   copy ..\common\$D\filefn.obj
348   copy ..\common\$D\fileconf.obj
349   copy ..\common\$D\framecmn.obj
350   copy ..\common\$D\ftp.obj
351   copy ..\common\$D\gdicmn.obj
352   copy ..\common\$D\image.obj
353   copy ..\common\$D\imagbmp.obj
354   copy ..\common\$D\imagjpeg.obj
355   copy ..\common\$D\imagpng.obj
356   copy ..\common\$D\imaggif.obj
357   copy ..\common\$D\intl.obj
358   copy ..\common\$D\ipcbase.obj
359   copy ..\common\$D\helpbase.obj
360   copy ..\common\$D\layout.obj
361   copy ..\common\$D\log.obj
362   copy ..\common\$D\memory.obj
363   copy ..\common\$D\mimetype.obj
364   copy ..\common\$D\module.obj
365   copy ..\common\$D\odbc.obj
366   copy ..\common\$D\object.obj
367   copy ..\common\$D\prntbase.obj
368   copy ..\common\$D\resource.obj
369   copy ..\common\$D\tbarbase.obj
370   copy ..\common\$D\tbarsmpl.obj
371   copy ..\common\$D\textfile.obj
372   copy ..\common\$D\timercmn.obj
373   copy ..\common\$D\utilscmn.obj
374   copy ..\common\$D\validate.obj
375   copy ..\common\$D\valgen.obj
376   copy ..\common\$D\valtext.obj
377   copy ..\common\$D\date.obj
378   copy ..\common\$D\hash.obj
379   copy ..\common\$D\list.obj
380   copy ..\common\$D\paper.obj
381
382 $(COMLIBOBJS2):
383   copy ..\common\$D\string.obj
384   copy ..\common\$D\socket.obj
385   copy ..\common\$D\sckaddr.obj
386   copy ..\common\$D\sckfile.obj
387   copy ..\common\$D\sckipc.obj
388   copy ..\common\$D\sckstrm.obj
389   copy ..\common\$D\url.obj
390   copy ..\common\$D\http.obj
391   copy ..\common\$D\protocol.obj
392   copy ..\common\$D\time.obj
393   copy ..\common\$D\tokenzr.obj
394   copy ..\common\$D\wxexpr.obj
395   copy ..\common\$D\y_tab.obj
396   copy ..\common\$D\extended.obj
397   copy ..\common\$D\process.obj
398   copy ..\common\$D\wfstream.obj
399   copy ..\common\$D\mstream.obj
400   copy ..\common\$D\zstream.obj
401   copy ..\common\$D\stream.obj
402   copy ..\common\$D\datstrm.obj
403   copy ..\common\$D\objstrm.obj
404   copy ..\common\$D\variant.obj
405   copy ..\common\$D\dlgcmn.obj
406   copy ..\common\$D\wincmn.obj
407   copy ..\common\$D\txtstrm.obj
408   copy ..\common\$D\wxchar.obj
409   copy ..\common\$D\unzip.obj
410   copy ..\common\$D\filesys.obj
411   copy ..\common\$D\fs_inet.obj
412   copy ..\common\$D\fs_zip.obj
413
414 $(GENLIBOBJS):
415   copy ..\generic\$D\choicdgg.obj
416   copy ..\generic\$D\gridg.obj
417   copy ..\generic\$D\laywin.obj
418   copy ..\generic\$D\panelg.obj
419   copy ..\generic\$D\progdlgg.obj
420   copy ..\generic\$D\prop.obj
421   copy ..\generic\$D\propform.obj
422   copy ..\generic\$D\proplist.obj
423   copy ..\generic\$D\sashwin.obj
424   copy ..\generic\$D\scrolwin.obj
425   copy ..\generic\$D\splitter.obj
426   copy ..\generic\$D\statusbr.obj
427   copy ..\generic\$D\tabg.obj
428   copy ..\generic\$D\textdlgg.obj
429   copy ..\generic\$D\tipdlg.obj
430   copy ..\generic\$D\busyinfo.obj
431
432 # wxWindows library as DLL
433 dll:
434         nmake -f makefile.va all FINAL=$(FINAL) DLL=1 WXMAKINGDLL=1 NEW_WXLIBNAME=$(NEW_WXLIBNAME)
435
436 cleandll:
437         nmake -f makefile.va clean FINAL=$(FINAL) DLL=1 WXMAKINGDLL=1 NEW_WXLIBNAME=$(NEW_WXLIBNAME)
438
439 # wxWindows + app as DLL. Only affects main.cpp.
440 dllapp:
441         nmake -f makefile.va all FINAL=$(FINAL) DLL=1
442
443 # wxWindows + app as DLL, for Netscape plugin - remove DllMain.
444 dllnp:
445         nmake -f makefile.va all FINAL=$(FINAL) DLL=1
446
447 # Use this to make dummy.obj and generate a PCH.
448 # You might use the dll target, then the pch target, in order to
449 # generate a DLL, then a PCH/dummy.obj for compiling your applications with.
450 #
451 # Explanation: Normally, when compiling a static version of wx.lib, your dummy.obj/PCH
452 # are associated with wx.lib. When using a DLL version of wxWindows, however,
453 # the DLL is compiled without a PCH, so you only need it for compiling the app.
454 # In fact headers are compiled differently depending on whether a DLL is being made
455 # or an app is calling the DLL exported functionality (WXDLLEXPORT is different
456 # in each case) so you couldn't use the same PCH.
457 pch:
458         nmake -f makefile.va pch1 WXUSINGDLL=1 FINAL=$(FINAL) NEW_WXLIBNAME=$(NEW_WXLIBNAME)
459
460 pch1:   dirs $(DUMMYOBJ)
461     echo $(DUMMYOBJ)
462
463 !if "$(WXMAKINGDLL)" != "1"
464
465 ### Static library
466
467 $(WXDIR)\lib\wxcom1.lib: $(COMLIBOBJS1)
468  touch $(WXDIR)\lib\wxcom1.lib
469  del $(WXDIR)\lib\wxcom1.lib
470  ilib $(LIBFLAGS) $@ @<<
471     $**;
472 <<
473
474 $(WXDIR)\lib\wxcom2.lib: $(COMLIBOBJS2)
475  touch $(WXDIR)\lib\wxcom2.lib
476  del $(WXDIR)\lib\wxcom2.lib
477  ilib $(LIBFLAGS) $@ @<<
478     $**;
479 <<
480
481 $(WXDIR)\lib\wxgen.lib: $(GENLIBOBJS)
482  touch $(WXDIR)\lib\wxgen.lib
483  del $(WXDIR)\lib\wxgen.lib
484  ilib $(LIBFLAGS) $@ @<<
485     $**;
486 <<
487  del *.obj
488
489 $(WXDIR)\lib\wxnones.lib: $(NONESSENTIALOBJS)
490  touch $(WXDIR)\lib\wxnones.lib
491  del $(WXDIR)\lib\wxnones.lib
492  ilib $(LIBFLAGS) $@ @<<
493     $**;
494 <<
495
496 $(WXDIR)\lib\wxos2.lib: $(OS2OBJS)
497  touch $(WXDIR)\lib\wxos2.lib
498  del $(WXDIR)\lib\wxos2.lib
499  ilib $(LIBFLAGS) $@ @<<
500     $**;
501 <<
502
503 $(WXDIR)\lib\wx.lib: \
504   $D\dummy.obj \
505   $(COMTEMPTGT1) \
506   $(COMTEMPTGT2) \
507   $(GENTEMPTGT) \
508   $(NONESTEMPTGT) \
509   $(OS2TEMPTGT) \
510   $(PERIPH_LIBS)
511  touch $(LIBTARGET)
512  del $(LIBTARGET)
513  ilib $(LIBFLAGS) $@ @<<
514     $**;
515 <<
516   del $(COMTEMPTGT1)
517   del $(COMTEMPTGT2)
518   del $(GENTEMPTGT)
519   del $(NONESTEMPTGT)
520   del $(OS2TEMPTGT)
521
522 !else
523
524 # Update the import library
525 $(WXDIR)\lib\wx200.lib: $(OBJECTS)
526     implib $(WXDIR)\lib\wx200.lib $(WXDIR)\lib\wx200.def
527
528 # Update the dynamic link library
529 $(WXDIR)\lib\wx200.dll: $(OBJECTS) $(WXDIR)\lib\wx200.lib
530     icc @<<
531     /B" $(LINKFLAGS)" /Fe$@
532     $(LIBS)
533     $(OBJECTS)
534     $(WXDIR)\lib\wx200.def
535 <<
536
537 !endif
538
539 $D\dummy.obj: dummy.$(SRCSUFF) $(WXDIR)\include\wx\wx.h $(WXDIR)\include\wx\os2\setup.h
540         icc $(CPPFLAGS) $(MAKEPRECOMP) /Fo$D\dummy.obj /Tp dummy.cpp
541
542 $D\dummydll.obj: dummydll.$(SRCSUFF) $(WXDIR)\include\wx\wx.h $(WXDIR)\include\wx\os2\setup.h
543         icc @<<
544 $(CPPFLAGS) $(MAKEPRECOMP) /Fo$D\dummydll.obj /c /Tp dummydll.cpp
545 <<
546
547 # If taking wxWindows from CVS, setup.h doesn't exist yet.
548 $(WXDIR)\include\wx\os2\setup.h: $(WXDIR)\include\wx\os2\setup0.h
549     copy "$(WXDIR)"\include\wx\os2\setup.h "$(WXDIR)"\include\wx\os2\setup.bak
550     copy "$(WXDIR)"\include\wx\os2\setup0.h "$(WXDIR)"\include\wx\os2\setup.h
551
552 ..\common\$D\extended.obj:     ..\common\extended.c
553         icc @<<
554 $(CPPFLAGS2) /Fo$@ $(COMMDIR)\extended.c
555 <<
556
557 ..\common\$D\y_tab.obj:     ..\common\y_tab.c ..\common\lex_yy.c
558         icc @<<
559 $(CPPFLAGS2) /DUSE_DEFINE /DYY_USE_PROTOS /Fo$@  ..\common\y_tab.c
560 <<
561
562 ..\common\y_tab.c:     ..\common\dosyacc.c
563         copy "..\common"\dosyacc.c "..\common"\y_tab.c
564
565 ..\common\lex_yy.c:    ..\common\doslex.c
566     copy "..\common"\doslex.c "..\common"\lex_yy.c
567
568 $(OBJECTS): $(WXDIR)/include/wx/setup.h
569
570 ..\common\$D\unzip.obj:     ..\common\unzip.c
571         icc @<<
572 $(CPPFLAGS2) /Fo$@ $(COMMDIR)\unzip.c
573 <<
574
575 clean: $(PERIPH_CLEAN_TARGET) clean_png clean_zlib clean_jpeg clean_xpm
576         -erase $(LIBTARGET)
577         -erase ..\..\lib\wx200.dll
578         -erase ..\..\lib\wx200.lib
579         -erase $(GENDIR)\$D\*.obj
580         -erase $(COMMDIR)\$D\*.obj
581         -erase $(COMMDIR)\\y_tab.c
582         -erase $(COMMDIR)\lex_yy.c
583         -erase $(OS2DIR)\$D\*.obj
584         -rmdir $(D)
585         -rmdir ole\$(D)
586         -rmdir ..\generic\$(D)
587         -rmdir ..\common\$(D)
588
589 cleanall: clean
590