1 #!#############################################################################
3 #! Purpose: tmake template file from which makefile.vc is generated by running
4 #! tmake -t vc wxwin.pro -o makefile.vc
5 #! Author: Vadim Zeitlin
8 #!#############################################################################
10 #! include the code which parses filelist.txt file and initializes
11 #! %wxCommon, %wxGeneric and %wxMSW hashes.
12 IncludeTemplate("filelist.t");
14 #! now transform these hashes into $project tags
15 foreach $file (sort keys %wxGeneric) {
17 if ( $wxGeneric{$file} =~ /\b(PS|G|16|U)\b/ ) {
18 $tag = "WXNONESSENTIALOBJS";
21 $tag = "WXGENERICOBJS";
24 $file =~ s/cp?p?$/obj/;
25 $project{$tag} .= "..\\generic\\\$D\\" . $file . " "
28 foreach $file (sort keys %wxCommon) {
29 next if $wxCommon{$file} =~ /\b16\b/;
31 $file =~ s/cp?p?$/obj/;
32 $project{"WXCOMMONOBJS"} .= "..\\common\\\$D\\" . $file . " "
35 foreach $file (sort keys %wxMSW) {
36 next if $wxMSW{$file} =~ /\b16\b/;
38 #! OLE files live in a subdir
39 $project{"WXMSWOBJS"} .= '..\msw\\';
40 $project{"WXMSWOBJS"} .= 'ole\\' if $wxMSW{$file} =~ /\bO\b/;
41 $file =~ s/cp?p?$/obj/;
42 $project{"WXMSWOBJS"} .= '$D\\' . $file . " ";
45 foreach $file (sort keys %wxHTML) {
46 next if $wxHTML{$file} =~ /\b16\b/;
48 $file =~ s/cp?p?$/obj/;
49 $project{"WXHTMLOBJS"} .= "..\\html\\\$D\\" . $file . " "
53 # This file was automatically generated by tmake at #$ Now()
54 # DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE VC.T!
57 # Author: Julian Smart
60 # Copyright: (c) 1997, Julian Smart
64 # Makefile : Builds wxWindows library wx.lib for VC++ (32-bit)
67 # FINAL=1 argument to nmake to build version with no debugging info.
68 # dll builds a library (wxdll.lib) suitable for creating DLLs
70 !include <..\makevc.env>
72 THISDIR=$(WXWIN)\src\msw
74 !if "$(WXMAKINGDLL)" == "1"
75 LIBTARGET=$(WXDIR)\lib\$(WXLIBNAME).dll
76 DUMMYOBJ=$D\dummydll.obj
82 # This one overrides the others, to be consistent with the settings in setup.h
83 MINIMAL_WXWINDOWS_SETUP=0
89 # Set to 0 if not using GLCanvas (only affects DLL build)
92 # These are absolute paths, so that the compiler
93 # generates correct __FILE__ symbols for debugging.
94 # Otherwise you don't be able to double-click on a memory
95 # error to load that file.
96 GENDIR=$(WXDIR)\src\generic
97 COMMDIR=$(WXDIR)\src\common
99 MSWDIR=$(WXDIR)\src\msw
100 DOCDIR = $(WXDIR)\docs
101 HTMLDIR = $(WXDIR)\src\html
103 {..\generic}.cpp{..\generic\$D}.obj:
105 $(CPPFLAGS) /Fo$@ /c /Tp $<
108 {..\common}.cpp{..\common\$D}.obj:
110 $(CPPFLAGS) /Fo$@ /c /Tp $<
113 {..\common}.c{..\common\$D}.obj:
115 $(CPPFLAGS2) /Fo$@ /c /Tc $<
118 {..\msw}.cpp{..\msw\$D}.obj:
120 $(CPPFLAGS) /Fo$@ /c /Tp $<
123 {..\msw}.c{..\msw\$D}.obj:
125 $(CPPFLAGS2) /Fo$@ /c /Tc $<
128 {..\msw\ole}.cpp{..\msw\ole\$D}.obj:
130 $(CPPFLAGS) /Fo$@ /c /Tp $<
133 {..\html}.cpp{..\html\$D}.obj:
135 $(CPPFLAGS) /Fo$@ /c /Tp $<
138 GENERICOBJS= #$ ExpandList("WXGENERICOBJS");
140 # These are generic things that don't need to be compiled on MSW,
141 # but sometimes it's useful to do so for testing purposes.
142 NONESSENTIALOBJS= #$ ExpandList("WXNONESSENTIALOBJS");
145 ..\common\$D\y_tab.obj \
146 #$ ExpandList("WXCOMMONOBJS");
148 MSWOBJS = #$ ExpandList("WXMSWOBJS");
150 HTMLOBJS = #$ ExpandList("WXHTMLOBJS");
153 # Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc.
154 # Add $(HTMLOBJS) if wanting wxHTML classes
155 OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) $(HTMLOBJS)
157 # Normal, static library
158 all: setuph dirs $(DUMMYOBJ) $(OBJECTS) $(PERIPH_TARGET) png zlib xpm jpeg tiff $(LIBTARGET)
161 cd $(WXDIR)\include\wx\msw
162 if not exist setup.h copy setup0.h setup.h
165 dirs: $(MSWDIR)\$D $(COMMDIR)\$D $(GENDIR)\$D $(OLEDIR)\$D $(HTMLDIR)\$D
185 # wxWindows library as DLL
187 nmake -f makefile.vc all FINAL=$(FINAL) DLL=1 WXMAKINGDLL=1 NEW_WXLIBNAME=$(NEW_WXLIBNAME)
190 nmake -f makefile.vc clean FINAL=$(FINAL) DLL=1 WXMAKINGDLL=1 NEW_WXLIBNAME=$(NEW_WXLIBNAME)
192 # wxWindows + app as DLL. Only affects main.cpp.
194 nmake -f makefile.vc all FINAL=$(FINAL) DLL=1
196 # wxWindows + app as DLL, for Netscape plugin - remove DllMain.
198 nmake -f makefile.vc all NOMAIN=1 FINAL=$(FINAL) DLL=1
200 # Use this to make dummy.obj and generate a PCH.
201 # You might use the dll target, then the pch target, in order to
202 # generate a DLL, then a PCH/dummy.obj for compiling your applications with.
204 # Explanation: Normally, when compiling a static version of wx.lib, your dummy.obj/PCH
205 # are associated with wx.lib. When using a DLL version of wxWindows, however,
206 # the DLL is compiled without a PCH, so you only need it for compiling the app.
207 # In fact headers are compiled differently depending on whether a DLL is being made
208 # or an app is calling the DLL exported functionality (WXDLLEXPORT is different
209 # in each case) so you couldn't use the same PCH.
211 nmake -f makefile.vc pch1 WXUSINGDLL=1 FINAL=$(FINAL) NEW_WXLIBNAME=$(NEW_WXLIBNAME)
213 pch1: dirs $(DUMMYOBJ)
216 !if "$(WXMAKINGDLL)" != "1"
220 $(WXDIR)\lib\$(WXLIBNAME).lib: $D\dummy.obj $(OBJECTS) $(PERIPH_LIBS)
225 $(OBJECTS) $D\dummy.obj $(PERIPH_LIBS)
230 ### Update the import library
232 $(WXDIR)\lib\$(WXLIBNAME).lib: $(DUMMYOBJ) $(OBJECTS)
236 $(DUMMYOBJ) $(OBJECTS)
237 -out:$(WXDIR)\lib\$(WXLIBNAME).lib
240 !if "$(USE_GLCANVAS)" == "1"
241 GL_LIBS=opengl32.lib glu32.lib
242 # GL_LIBS_DELAY=/delayload:opengl32.dll
245 # Update the dynamic link library
246 $(WXDIR)\lib\$(WXLIBNAME).dll: $(DUMMYOBJ) $(OBJECTS)
249 -out:$(WXDIR)\lib\$(WXLIBNAME).dll
250 $(DUMMYOBJ) $(OBJECTS) $(guilibsdll) shell32.lib comctl32.lib ctl3d32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib odbc32.lib advapi32.lib winmm.lib $(GL_LIBS) $(WXDIR)\lib\png$(LIBEXT).lib $(WXDIR)\lib\zlib$(LIBEXT).lib $(WXDIR)\lib\xpm$(LIBEXT).lib $(WXDIR)\lib\jpeg$(LIBEXT).lib $(WXDIR)\lib\tiff$(LIBEXT).lib
252 /delayload:ws2_32.dll /delayload:advapi32.dll /delayload:user32.dll /delayload:gdi32.dll
253 /delayload:comdlg32.dll /delayload:shell32.dll /delayload:comctl32.dll /delayload:ole32.dll
254 /delayload:oleaut32.dll /delayload:rpcrt4.dll $(GL_LIBS_DELAY)
259 # /delayload:winmm.dll # Removed because it can cause a crash for some people
261 ########################################################
262 # Windows-specific objects
264 $D\dummy.obj: dummy.$(SRCSUFF) $(WXDIR)\include\wx\wx.h $(WXDIR)\include\wx\msw\setup.h
265 cl $(CPPFLAGS) $(MAKEPRECOMP) /Fo$D\dummy.obj /c /Tp dummy.cpp
267 $D\dummydll.obj: dummydll.$(SRCSUFF) $(WXDIR)\include\wx\wx.h $(WXDIR)\include\wx\msw\setup.h
269 $(CPPFLAGS) $(MAKEPRECOMP) /Fo$D\dummydll.obj /c /Tp dummydll.cpp
272 # Compile certain files with no optimization (some files cause a
273 # compiler crash for buggy versions of VC++, e.g. 4.0).
274 # Don't forget to put FINAL=1 on the command line.
277 $(CPPFLAGS2) /Od /Fo$(COMMDIR)\$D\datetime.obj /c /Tp $(COMMDIR)\datetime.cpp
280 $(CPPFLAGS2) /Od /Fo$(COMMDIR)\$D\encconv.obj /c /Tp $(COMMDIR)\encconv.cpp
283 $(CPPFLAGS2) /Od /Fo$(COMMDIR)\$D\fileconf.obj /c /Tp $(COMMDIR)\fileconf.cpp
286 $(CPPFLAGS2) /Od /Fo$(COMMDIR)\$D\hash.obj /c /Tp $(COMMDIR)\hash.cpp
289 $(CPPFLAGS2) /Od /Fo$(COMMDIR)\$D\resource.obj /c /Tp $(COMMDIR)\resource.cpp
292 $(CPPFLAGS2) /Od /Fo$(COMMDIR)\$D\textfile.obj /c /Tp $(COMMDIR)\textfile.cpp
295 $(CPPFLAGS2) /Od /Fo$(GENDIR)\$D\choicdgg.obj /c /Tp $(GENDIR)\choicdgg.cpp
298 $(CPPFLAGS2) /Od /Fo$(GENDIR)\$D\grid.obj /c /Tp $(GENDIR)\grid.cpp
301 $(CPPFLAGS2) /Od /Fo$(GENDIR)\$D\gridsel.obj /c /Tp $(GENDIR)\gridsel.cpp
304 $(CPPFLAGS2) /Od /Fo$(GENDIR)\$D\logg.obj /c /Tp $(GENDIR)\logg.cpp
307 $(CPPFLAGS2) /Od /Fo$(GENDIR)\$D\proplist.obj /c /Tp $(GENDIR)\proplist.cpp
310 $(CPPFLAGS2) /Od /Fo$(MSWDIR)\$D\clipbrd.obj /c /Tp $(MSWDIR)\clipbrd.cpp
313 $(CPPFLAGS2) /Od /Fo$(MSWDIR)\$D\control.obj /c /Tp $(MSWDIR)\control.cpp
316 $(CPPFLAGS2) /Od /Fo$(MSWDIR)\$D\listbox.obj /c /Tp $(MSWDIR)\listbox.cpp
319 $(CPPFLAGS2) /Od /Fo$(MSWDIR)\$D\mdi.obj /c /Tp $(MSWDIR)\mdi.cpp
322 $(CPPFLAGS2) /Od /Fo$(MSWDIR)\$D\menu.obj /c /Tp $(MSWDIR)\menu.cpp
325 $(CPPFLAGS2) /Od /Fo$(MSWDIR)\$D\notebook.obj /c /Tp $(MSWDIR)\notebook.cpp
328 $(CPPFLAGS2) /Od /Fo$(MSWDIR)\$D\tbar95.obj /c /Tp $(MSWDIR)\tbar95.cpp
331 $(CPPFLAGS2) /Od /Fo$(MSWDIR)\$D\treectrl.obj /c /Tp $(MSWDIR)\treectrl.cpp
334 $(CPPFLAGS2) /Od /Fo$(HTMLDIR)\$D\helpfrm.obj /c /Tp $(HTMLDIR)\helpfrm.cpp
337 ..\common\$D\y_tab.obj: ..\common\y_tab.c ..\common\lex_yy.c
339 $(CPPFLAGS2) /c ..\common\y_tab.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@
342 ..\common\y_tab.c: ..\common\dosyacc.c
343 copy "..\common"\dosyacc.c "..\common"\y_tab.c
345 ..\common\lex_yy.c: ..\common\doslex.c
346 copy "..\common"\doslex.c "..\common"\lex_yy.c
348 $(OBJECTS): $(WXDIR)/include/wx/setup.h
350 ..\common\$D\unzip.obj: ..\common\unzip.c
352 $(CPPFLAGS2) /c $(COMMDIR)\unzip.c /Fo$@
355 # Peripheral components
359 nmake -f makefile.vc FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL) CRTFLAG=$(CRTFLAG)
364 nmake -f makefile.vc clean
369 nmake -f makefile.vc FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL) CRTFLAG=$(CRTFLAG)
374 nmake -f makefile.vc clean
379 nmake -f makefile.vc FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL) CRTFLAG=$(CRTFLAG) all
384 nmake -f makefile.vc clean
389 nmake -f makefile.vc FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL) CRTFLAG=$(CRTFLAG) all
394 nmake -f makefile.vc clean
399 nmake -f makefile.vc FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL) CRTFLAG=$(CRTFLAG)
404 nmake -f makefile.vc clean
408 cd $(WXDIR)\utils\rcparser\src
409 nmake -f makefile.vc FINAL=$(FINAL)
412 cleanall: clean clean_png clean_zlib clean_xpm clean_jpeg clean_tiff
413 -erase ..\..\lib\wx$(WXVERSION)$(LIBEXT).dll
414 -erase ..\..\lib\wx$(WXVERSION)$(LIBEXT).lib
415 -erase ..\..\lib\wx$(WXVERSION)$(LIBEXT).exp
416 -erase ..\..\lib\wx$(WXVERSION)$(LIBEXT).pdb
417 -erase ..\..\lib\wx$(WXVERSION)$(LIBEXT).ilk
420 clean: $(PERIPH_CLEAN_TARGET)
422 -erase $(WXDIR)\lib\$(WXLIBNAME).pdb
425 -erase $(WXLIBNAME).pch
426 -erase $(GENDIR)\$D\*.obj
427 -erase $(GENDIR)\$D\*.pdb
428 -erase $(GENDIR)\$D\*.sbr
429 -erase $(COMMDIR)\$D\*.obj
430 -erase $(COMMDIR)\$D\*.pdb
431 -erase $(COMMDIR)\$D\*.sbr
432 -erase $(COMMDIR)\y_tab.c
433 -erase $(COMMDIR)\lex_yy.c
434 -erase $(MSWDIR)\$D\*.obj
435 -erase $(MSWDIR)\$D\*.sbr
436 -erase $(MSWDIR)\$D\*.pdb
437 -erase $(OLEDIR)\$D\*.obj
438 -erase $(OLEDIR)\$D\*.sbr
439 -erase $(OLEDIR)\$D\*.pdb
440 -erase $(HTMLDIR)\$D\*.obj
441 -erase $(HTMLDIR)\$D\*.sbr
442 -erase $(HTMLDIR)\$D\*.pdb
445 -rmdir ..\generic\$(D)
446 -rmdir ..\common\$(D)
451 docs: allhlp allhtml allpdfrtf htb htmlhelp
454 wxhlp: $(DOCDIR)/winhelp/wx.hlp
455 refhlp: $(DOCDIR)/winhelp/techref.hlp
456 rtf: $(DOCDIR)/winhelp/wx.rtf
457 pdfrtf: $(DOCDIR)/pdf/wx.rtf
458 refpdfrtf: $(DOCDIR)/pdf/techref.rtf
460 htb: $(DOCDIR)\htb\wx.htb
461 wxhtml: $(DOCDIR)\html\wx\wx.htm
462 htmlhelp: $(DOCDIR)\htmlhelp\wx.chm
464 wxps: $(WXDIR)\docs\ps\wx.ps
465 referencps: $(WXDIR)\docs\ps\referenc.ps
468 cd $(WXDIR)\utils\dialoged\src
469 nmake -f makefile.vc hlp
473 cd $(WXDIR)\utils\dialoged\src
474 nmake -f makefile.vc html
477 allps: wxps referencps
478 cd $(WXDIR)\utils\dialoged\src
479 nmake -f makefile.vc ps
483 cd $(WXDIR)\utils\dialoged\src
484 nmake -f makefile.vc pdfrtf
487 $(DOCDIR)/winhelp/wx.hlp: $(DOCDIR)/latex/wx/wx.rtf $(DOCDIR)/latex/wx/wx.hpj
488 cd $(DOCDIR)/latex/wx
491 -erase $(DOCDIR)\winhelp\wx.hlp
492 -erase $(DOCDIR)\winhelp\wx.cnt
493 move wx.hlp $(DOCDIR)\winhelp\wx.hlp
494 move wx.cnt $(DOCDIR)\winhelp\wx.cnt
497 $(DOCDIR)/winhelp/techref.hlp: $(DOCDIR)/latex/techref/techref.rtf $(DOCDIR)/latex/techref/techref.hpj
498 cd $(DOCDIR)/latex/techref
501 move techref.hlp $(DOCDIR)\winhelp\techref.hlp
502 move techref.cnt $(DOCDIR)\winhelp\techref.cnt
505 $(DOCDIR)/latex/wx/wx.rtf: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/manual.tex
506 cd $(DOCDIR)\latex\wx
507 -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/wx/manual.tex $(DOCDIR)/latex/wx/wx.rtf -twice -winhelp
510 $(DOCDIR)/latex/techref/techref.rtf: $(DOCDIR)/latex/techref/techref.tex
511 cd $(DOCDIR)\latex\techref
512 -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/techref/techref.tex $(DOCDIR)/latex/techref/techref.rtf -twice -winhelp
515 $(DOCDIR)/pdf/wx.rtf: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/manual.tex
516 cd $(DOCDIR)\latex\wx
517 -copy *.wmf $(DOCDIR)\pdf
518 -copy *.bmp $(DOCDIR)\pdf
519 -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/wx/manual.tex $(DOCDIR)/pdf/wx.rtf -twice -rtf
522 $(DOCDIR)/pdf/techref.rtf: $(DOCDIR)/latex/techref/techref.tex
523 cd $(DOCDIR)\latex\techref
524 -copy *.wmf $(DOCDIR)\pdf
525 -copy *.bmp $(DOCDIR)\pdf
526 -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/techref/techref.tex $(DOCDIR)/pdf/techref.rtf -twice -rtf
529 $(DOCDIR)\html\wx\wx.htm: $(DOCDIR)\latex\wx\classes.tex $(DOCDIR)\latex\wx\body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)\latex\wx\manual.tex
530 cd $(DOCDIR)\latex\wx
531 -mkdir $(DOCDIR)\html\wx
532 copy *.gif $(DOCDIR)\html\wx
533 -start $(WAITFLAG) tex2rtf $(DOCDIR)\latex\wx\manual.tex $(DOCDIR)\html\wx\wx.htm -twice -html
534 -erase $(DOCDIR)\html\wx\*.con
535 -erase $(DOCDIR)\html\wx\*.ref
536 -erase $(DOCDIR)\latex\wx\*.con
537 -erase $(DOCDIR)\latex\wx\*.ref
540 $(DOCDIR)\htmlhelp\wx.chm : $(DOCDIR)\html\wx\wx.htm $(DOCDIR)\html\wx\wx.hhp
543 -mkdir ..\..\htmlhelp
544 -erase $(DOCDIR)\htmlhelp\wx.chm
545 move wx.chm ..\..\htmlhelp
548 $(WXDIR)\docs\latex\wx\manual.dvi: $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/manual.tex
549 cd $(WXDIR)\docs\latex\wx
558 $(WXDIR)\docs\ps\wx.ps: $(WXDIR)\docs\latex\wx\manual.dvi
559 cd $(WXDIR)\docs\latex\wx
560 -dvips32 -o wx.ps manual
561 move wx.ps $(WXDIR)\docs\ps\wx.ps
564 $(WXDIR)\docs\latex\wx\referenc.dvi: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/referenc.tex
565 cd $(WXDIR)\docs\latex\wx
574 $(WXDIR)\docs\ps\referenc.ps: $(WXDIR)\docs\latex\wx\referenc.dvi
575 cd $(WXDIR)\docs\latex\wx
576 -dvips32 -o referenc.ps referenc
577 move referenc.ps $(WXDIR)\docs\ps\referenc.ps
580 # An htb file is a zip file containing the .htm, .gif, .hhp, .hhc and .hhk
581 # files, renamed to htb.
582 # This can then be used with e.g. helpview.
583 # Optionally, a cached version of the .hhp file can be generated with hhp2cached.
584 $(DOCDIR)\htb\wx.htb: $(DOCDIR)\html\wx\wx.htm
585 cd $(WXDIR)\docs\html\wx
587 zip wx.zip *.htm *.gif *.hhp *.hhc *.hhk
589 move wx.zip $(DOCDIR)\htb\wx.htb
592 # In order to force document reprocessing
594 -touch $(WXDIR)\docs\latex\wx\manual.tex
596 updatedocs: touchmanual alldocs
599 -erase $(DOCDIR)\winhelp\wx.hlp
600 -erase $(DOCDIR)\winhelp\wx.cnt
601 -erase $(DOCDIR)\html\wx\*.htm
602 -erase $(DOCDIR)\pdf\wx.rtf
603 -erase $(DOCDIR)\latex\wx\wx.rtf
604 -erase $(DOCDIR)\latex\wx\WX.PH
605 -erase $(DOCDIR)\htmlhelp\wx.chm
606 -erase $(DOCDIR)\htb\wx.htb
608 # Start Word, running the GeneratePDF macro. MakeManual.dot should be in the
609 # Office StartUp folder, and PDFMaker should be installed.
610 updatepdf: # touchmanual pdfrtf
611 start $(WAITFLAG) "winword d:\wx2\wxWindows\docs\latex\pdf\wx.rtf /mGeneratePDF"
615 makefile.$(MFTYPE) : $(WXWIN)\distrib\msw\tmake\filelist.txt $(WXWIN)\distrib\msw\tmake\$(MFTYPE).t
616 cd $(WXWIN)\distrib\msw\tmake
617 tmake -t $(MFTYPE) wxwin.pro -o makefile.$(MFTYPE)
618 copy makefile.$(MFTYPE) $(WXWIN)\src\msw