Make manual page rendering easier.
[jimtcl/wkoszek.git] / Makefile.vc
blob4d8f60a0f460257629af0b6d95eb286605a87259
1 # -*- Makefile -*- 
3 # This is a Microsoft Visual C NMAKE makefile to use in building the
4 # Jim interpreter.
6 # Usage:
7 #   nmake -f Makefile.vc clean all
9 # To build a debug build, add DEBUG=1 to the command line. To build
10 # for profiling, add PROFILE=1. eg:
11 #   nmake -f Makefile.vc DEBUG=1 clean all
14 # Copyright (C) 2005 Pat Thoyts <patthoyts@users.sourceforge.net>
17 SRCDIR =.
19 !ifndef DEBUG
20 DEBUG   =0
21 !endif
22 !ifndef PROFILE
23 PROFILE =0
24 !endif
25 !ifndef SYMBOLS
26 SYMBOLS = 0
27 !endif
28 !ifndef CC
29 CC=cl
30 !endif
31 !ifndef LINK
32 LINK=link
33 !endif
35 # If you have sqlite3 installed and want to build the extension add
36 # SQLITE3DIR=c:\path\to\sqlite3
38 !ifndef SQLITE3DIR
39 SQLITE3    =0
40 !else
41 SQLITE3    =1
42 SQLITE_INC=-I$(SQLITE3DIR)
43 SQLITE_LIB=-libpath:$(SQLITE3DIR) libsqlite3.lib
44 !endif
46 #-------------------------------------------------------------------------
47 # There should be no need to edit below this point.
48 #-------------------------------------------------------------------------
50 !if $(DEBUG)
51 OUTDIR =Debug
52 CFLAGS =-Od -Zi -GZ -MDd -D_DEBUG
53 LDFLAGS=-debug:full -debugtype:cv
54 !else
55 OUTDIR =Release
56 !if $(SYMBOLS)
57 CFLAGS =-Od -Zi -Op -Gs -MD -DNDEBUG
58 LDFLAGS=-debug -opt:ref -opt:icf,3
59 !else
60 CFLAGS =-O2 -Otip -Gs -MD -DNDEBUG
61 LDFLAGS=-release -opt:ref -opt:icf,3
62 !endif
63 !endif
65 !if $(PROFILE)
66 CFLAGS =$(CFLAGS) -Zi
67 LDFLAGS=$(LDFLAGS) -profile -map
68 !endif
70 !if "$(OS)" == "Windows_NT"
71 RMDIR = rmdir /s /q >NUL
72 !else
73 RMDIR = deltree /y
74 !endif
75 DEL   = del /f /q
77 TMPDIR =$(OUTDIR)\Objects
79 CC     =$(CC) -nologo
80 LD     =$(LINK) -nologo
82 CFLAGS =$(CFLAGS) -W3 -YX -Fp$(TMPDIR)^\
83 INC    =
84 DEFS   =-DWIN32
85 LIBS   =
87 all:      jim aio win32 win32com win32api dll #sqlite3 eventloop
88 jim:      setup $(OUTDIR)\jim.exe
89 jimwish:  setup $(OUTDIR)\jimwish.exe
90 dll:      setup $(OUTDIR)\jim.dll
91 aio:      setup $(OUTDIR)\jim-aio-1.0.dll
92 sqlite3:  setup $(OUTDIR)\jim-sqlite3-1.0.dll
93 eventloop: setup $(OUTDIR)\jim-eventloop-1.0.dll
94 win32:    setup $(OUTDIR)\jim-win32-1.0.dll
95 win32api: setup $(OUTDIR)\jim-win32api-1.0.dll
96 win32com: setup $(OUTDIR)\jim-win32com-1.0.dll
98 $(OUTDIR)\jim.exe: $(TMPDIR)\jim.obj $(TMPDIR)\jimsh.obj
99         @$(LD) $(LDFLAGS) -out:$@ $** $(LIBS)
101 $(OUTDIR)\jim.dll: $(TMPDIR)\jim.dll.obj
102         @$(LD) $(LDFLAGS) -dll -out:$@ $** $(LIBS)
103         @if exist $(@:.dll=.exp) $(DEL) $(@:.dll=.exp)
105 $(OUTDIR)\jim-win32-1.0.dll: $(TMPDIR)\jim-win32.obj
106         @$(LD) $(LDFLAGS) -dll -out:$@ $** $(LIBS) >NUL
107         @if exist $(@:.dll=.exp) $(DEL) $(@:.dll=.exp)
109 $(OUTDIR)\jim-win32api-1.0.dll: $(TMPDIR)\jim-win32api.obj
110         @$(LD) $(LDFLAGS) -dll -out:$@ $** $(LIBS) >NUL
111         @if exist $(@:.dll=.exp) $(DEL) $(@:.dll=.exp)
113 $(OUTDIR)\jim-win32com-1.0.dll: $(TMPDIR)\jim-win32com.obj
114         @$(LD) $(LDFLAGS) -dll -out:$@ $** $(LIBS) >NUL
115         @if exist $(@:.dll=.exp) $(DEL) $(@:.dll=.exp)
117 $(OUTDIR)\jim-aio-1.0.dll: $(TMPDIR)\jim-aio.obj
118         @$(LD) $(LDFLAGS) -dll -out:$@ $** $(LIBS) >NUL
119         @if exist $(@:.dll=.exp) $(DEL) $(@:.dll=.exp)
121 $(OUTDIR)\jim-eventloop-1.0.dll: $(TMPDIR)\jim-eventloop.obj
122         @$(LD) $(LDFLAGS) -dll -out:$@ $** $(LIBS) >NUL
123         @if exist $(@:.dll=.exp) $(DEL) $(@:.dll=.exp)
125 $(OUTDIR)\jim-sqlite3-1.0.dll: $(TMPDIR)\jim-sqlite3.obj
126 !if $(SQLITE3)
127         @$(LD) $(LDFLAGS) -dll -out:$@ $** $(LIBS) $(SQLITE_LIB) >NUL
128         @if exist $(@:.dll=.exp) $(DEL) $(@:.dll=.exp)
129 !else
130         @echo cannot build sqlite3 extension - SQLITE3DIR not defined
131 !endif
133 $(OUTDIR)\jimwish.exe: $(TMPDIR)\jim.obj $(TMPDIR)\jimwish.obj
134         @$(LD) $(LDFLAGS) -out:$@ $** $(LIBS) user32.lib
136 .PHONY: all jim dll win32 win32api win32com jim jimwish aio sqlite3
138 #-------------------------------------------------------------------------
139 setup:
140         @if not exist $(OUTDIR) mkdir $(OUTDIR)
141         @if not exist $(TMPDIR) mkdir $(TMPDIR)
143 test: jim
144         $(OUTDIR)\jim.exe test.tcl
146 clean:
147         @if exist $(TMPDIR)\NUL $(RMDIR) $(TMPDIR) >NUL
149 realclean: clean
150         @if exist $(OUTDIR)\NUL $(RMDIR) $(OUTDIR) >NUL
152 #-------------------------------------------------------------------------
154 .SUFFIXES:.c .cpp
156 {$(SRCDIR)}.c{$(TMPDIR)}.obj::
157         @$(CC) $(CFLAGS) $(DEFS) $(INC) -Fo$(TMPDIR)\ -c @<<
161 {$(SRCDIR)}.cpp{$(TMPDIR)}.obj::
162         @$(CC) $(CFLAGS) $(DEFS) $(INC) -Fo$(TMPDIR)\ -c @<<
166 $(TMPDIR)\jim.obj: $(SRCDIR)\jim.c $(SRCDIR)\jim.h
167 $(TMPDIR)\jim-aio.obj: $(SRCDIR)\jim-aio.c $(SRCDIR)\jim.h
168 $(TMPDIR)\jim-eventloop.obj: $(SRCDIR)\jim-eventloop.c $(SRCDIR)\jim.h
169 $(TMPDIR)\jim-win32.obj: $(SRCDIR)\jim-win32.c $(SRCDIR)\jim.h
170 $(TMPDIR)\jim-win32api.obj: $(SRCDIR)\jim-win32api.c $(SRCDIR)\jim.h
171 $(TMPDIR)\jim-win32com.obj: $(SRCDIR)\jim-win32com.c $(SRCDIR)\jim.h
172 $(TMPDIR)\jim.dll.obj: $(SRCDIR)\jim.c $(SRCDIR)\jim.h
173         @$(CC) -DBUILD_Jim $(CFLAGS) $(DEFS) $(INC) -Fo$@ -c $(SRCDIR)\jim.c
174 $(TMPDIR)\jim-sqlite3.obj: $(SRCDIR)\jim-sqlite3.c  $(SRCDIR)\jim.h
175 !if $(SQLITE3)
176         @$(CC) $(CFLAGS) $(DEFS) $(INC) $(SQLITE_INC) -Fo$(TMPDIR)\ -c $(SRCDIR)\jim-sqlite3.c
177 !else
178         @echo cannot build sqlite3 extension - SQLITE3DIR not defined
179 !endif
181 #-------------------------------------------------------------------------