1# Borland C++ 4.52 makefile
2#
3# Copyright (c) 1993-1996 Lucent Technologies
4# based on original from
5# Copyright (c) 1995-1996 by Sun Microsystems, Inc.
6#
7# See the file "license.terms" for information on usage and redistribution
8# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
9
10!include "..\..\Makefile.bc"
11
12#
13# Project directories
14#
15# ROOT = top of source tree
16# TMPDIR = location where .obj files should be stored during build
17
18ROOT	   		= ..
19TMPDIR			= .
20TARGET_LIB_ITK		= $(TARGET_LIB)\Itk2.2
21TARGET_DOC_ITK 		= $(TARGET_DOC)\Itk
22
23# uncomment the following line to compile with symbols
24#DEBUG=1
25
26# uncomment the following two lines to compile with TCL_MEM_DEBUG
27#DEBUGDEFINES	=TCL_MEM_DEBUG
28
29
30INCLUDES   =$(BORLAND)\include;$(ROOT)\generic;$(ROOT);$(TCLDIR)\generic;$(ITCLDIR)\generic;$(TKDIR)\generic;$(TKDIR)\xlib;$(TKDIR)\bitmaps
31LIBDIRS    =$(BORLAND)\lib;$(ROOT)\win
32
33!ifndef DEBUG
34
35# these macros cause maximum optimization and no symbols
36DEBUGLDFLAGS =
37DEBUGCCFLAGS = -v- -vi- -O2
38
39!else
40
41# these macros enable debugging
42DEBUGLDFLAGS = -v
43DEBUGCCFLAGS = -k -Od -v
44
45!endif
46
47DEFINES = _RTLDLL;USE_TCLALLOC=0;STRICT;$(DEBUGDEFINES);ITCL_NAMESPACES=1
48PROJECTCCFLAGS= $(DEBUGCCFLAGS) -w-par -w-stu
49
50LNFLAGS_exe = -Tpe -aa -c $(DEBUGLDFLAGS) $(BORLAND)\lib\c0w32
51LNFLAGS_dll = -Tpd -aa -c $(DEBUGLDFLAGS) $(BORLAND)\lib\c0d32
52
53LNLIBS_exe =	$(ITKLIB) $(ITCLLIBDIR)\$(ITCLLIB) $(TKLIBDIR)\$(TKLIB) $(TCLLIBDIR)\$(TCLLIB) import32 cw32i
54LNLIBS_dll =	$(ITCLLIBDIR)\$(ITCLLIB) $(TKLIBDIR)\$(TKLIB) $(TCLLIBDIR)\$(TCLLIB) import32 cw32i
55
56#
57# Global makefile settings
58#
59
60.AUTODEPEND
61.CACHEAUTODEPEND
62
63.suffixes: .c .dll .lib .obj .exe
64
65.path.c=$(ROOT)\win;$(ROOT)\generic;
66.path.obj=$(TMPDIR)
67
68ITKWISHOBJS = \
69	$(TMPDIR)\winMain.obj
70
71ITKOBJS = \
72	$(TMPDIR)\itk_archetype.obj \
73	$(TMPDIR)\itk_cmds.obj \
74	$(TMPDIR)\itk_option.obj \
75	$(TMPDIR)\itk_util.obj \
76	$(TMPDIR)\dllEntryPoint.obj
77
78ITKWISH = itkwish.exe
79
80
81#
82# Targets
83#
84
85all: cfgdll $(ITKDLL) cfgexe $(ITKWISH) cfgcln
86test: $(ITKWISH)
87	$(CP) $(TCLLIBDIR)\*.dll
88	$(CP) $(TKLIBDIR)\*.dll
89	$(CP) $(ITCLLIBDIR)\*.dll
90#set ITK_
91	$(ITKWISH) <<|
92   cd ..\tests
93   source all
94   exit
95|
96
97install: all
98	$(MKDIR) "$(TARGET_ROOT)"
99	$(MKDIR) "$(TARGET_BIN)"
100	$(MKDIR) "$(TARGET_LIB_ROOT)"
101	$(MKDIR) "$(TARGET_LIB)"
102	$(MKDIR) "$(TARGET_LIB_ITK)"
103	$(MKDIR) "$(TARGET_INCLUDE_ROOT)"
104	$(MKDIR) "$(TARGET_INCLUDE)"
105	$(MKDIR) "$(TARGET_DOC)"
106	$(MKDIR) "$(TARGET_DOC_ITK)"
107	$(CP) $(TMPDIR)\$(ITKWISH) "$(TARGET_BIN)"
108	$(CP) $(TMPDIR)\$(ITKDLL) "$(TARGET_BIN)"
109	$(CP) $(ROOT)\generic\itk.h "$(TARGET_INCLUDE)"
110	$(CP) $(ROOT)\library\*.* "$(TARGET_LIB_ITK)"
111	$(CP) $(ROOT)\win\*.tcl "$(TARGET_LIB_ITK)"
112	$(CP) $(ROOT)\..\html\Itk\*.* "$(TARGET_DOC_ITK)"
113
114# Implicit Targets
115
116.c.obj:
117	@$(BCC32) {$< }
118
119.dll.lib:
120	$(IMPLIB) -c $@ $<
121
122.rc.res:
123	$(RC) -i$(ROOT)\generic;$(ITCLDIR)\generic;$(TCLDIR)\generic;$(TKDIR)\generic $<
124
125#
126# Special case object file targets
127#
128
129#
130# Configuration file targets - these files are implicitly used by the compiler
131#
132
133cfgdll:
134	@$(CP) &&|
135		-n$(TMPDIR) -I$(INCLUDES) -c -WD
136		-D$(DEFINES) -3 -d $(PROJECTCCFLAGS)
137| bcc32.cfg >NUL
138
139cfgexe:
140	@$(CP) &&|
141		-n$(TMPDIR) -I$(INCLUDES) -c -W
142		-D$(DEFINES) -3 -d $(PROJECTCCFLAGS)
143| bcc32.cfg >NUL
144
145cfgtest:
146	@$(CP) &&|
147		-n$(TMPDIR) -I$(INCLUDES) -c -W
148		-D$(DEFINES);TCL_TEST -3 -d $(PROJECTCCFLAGS)
149| bcc32.cfg >NUL
150
151cfgcln:
152	@$(RM) bcc32.cfg
153
154#
155# Executable targets
156#
157
158$(ITKDLL): $(ITKOBJS) itk.def rc\itk.res
159	$(TLINK32) @&&|
160$(LNFLAGS_dll) $(ITKOBJS)
161$@
162-x
163$(LNLIBS_dll)
164itk.def
165rc\itk.res
166|
167
168$(ITKWISH): $(ITKWISHOBJS) $(ITKLIB) rc\itkwish.res
169	$(TLINK32) @&&|
170$(LNFLAGS_exe) $(ITKWISHOBJS)
171$@
172-x
173$(LNLIBS_exe)
174|, &&|
175EXETYPE WINDOWS
176CODE PRELOAD MOVEABLE DISCARDABLE
177DATA PRELOAD MOVEABLE MULTIPLE
178|, rc\itkwish.res
179
180#
181# Other dependencies
182#
183
184
185# The following rule automatically generates a tk.def file containing
186# an export entry for every public symbol in the $(TKDLL) library.
187
188itk.def: $(ITKOBJS)
189	$(TCLLIBDIR)\dumpexts.exe -o $@ $(ITKDLL) @&&|
190		$(ITKOBJS)
191|
192
193# Dependencies for .rc files:
194rc\itk.res: rc\*.cur rc\itk.ico
195rc\itkwish.res: rc\*.cur rc\itk.ico
196
197# debugging rules, the .dll and .exe files must be in the same
198# directory as the object files for debugging purposes
199
200$(TMPDIR)\$(ITKDLL): $(ITKDLL)
201	$(CP) $(ITKDLL) $(TMPDIR)
202
203$(TMPDIR)\$(ITCLDLL): $(ITCLLIBDIR)\$(ITCLDLL)
204        $(CP) $(ITCLLIBDIR)\$(ITCLDLL) $(TMPDIR)
205
206$(TMPDIR)\$(TKDLL): $(TKLIBDIR)\$(TKDLL)
207        $(CP) $(TKLIBDIR)\$(TKDLL) $(TMPDIR)
208
209$(TMPDIR)\$(TCLDLL): $(TCLLIBDIR)\$(TCLDLL)
210	$(CP) $(TCLLIBDIR)\$(TCLDLL) $(TMPDIR)
211
212$(TMPDIR)\$(ITKWISH): $(ITKWISH)
213	$(CP) $(ITKWISH) $(TMPDIR)
214
215debug: $(TMPDIR)\$(ITKDLL) $(TMPDIR)\$(ITCLDLL) $(TMPDIR)\$(TKDLL) $(TMPDIR)\$(TCLDLL)
216
217
218# remove all generated files
219
220clean:
221	-@$(RM) $(ITKWISH)
222	-@$(RM) $(ITKLIB)
223	-@$(RM) $(ITKDLL)
224	-@$(RM) itk.def
225	-@$(RM) $(TMPDIR)\Rc\*.res
226	-@$(RM) $(TMPDIR)\*.obj
227	-@$(RM) *.cfg
228