1 # This file is CYGNUS LOCAL. It is a copy of makefile.vc modified for
4 # Visual C++ 4.0 makefile
6 # Copyright (c) 1993-1996 Lucent Technologies
8 # See the file "license.terms" for information on usage and redistribution
9 # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
12 exec_prefix = @exec_prefix@
13 VPATH = @srcdir@:@srcdir@/../generic:@srcdir@/../unix
17 includedir=@includedir@
30 DLL_LDFLAGS = @DLL_LDFLAGS@
31 DLL_LDLIBS = @DLL_LDLIBS@
34 INSTALL_PROGRAM = @INSTALL_PROGRAM@
35 INSTALL_DATA = @INSTALL_DATA@
40 # ROOT = top of source tree
42 # TMPDIR = location where .obj files should be stored during build
48 TCLLIBDIR = @TCL_BIN_DIR@
49 TKLIBDIR = @TK_BIN_DIR@
50 ITCLLIBDIR = @ITCL_BIN_DIR@
52 TCLSRCDIR = @TCL_SRC_DIR@
53 TKSRCDIR = @TK_SRC_DIR@
54 ITCLSRCDIR = @ITCL_SRC_DIR@
57 SRC_INC_DIR = $(ROOT)/generic
58 SRC_WIN_DIR = $(ROOT)/win
59 SRC_UNIX_DIR = $(ROOT)/unix
60 SRC_LIB_DIR = $(ROOT)/library
61 SRC_MAN_DIR = $(ROOT)/doc
64 # Here are all the built files we will need:
67 ITCL_VERSION = @ITCL_VERSION@
70 CYGITKLIB = @CYGITKLIB@
71 CYGITKDLL = @CYGITKDLL@
72 CYGITKWISH = @CYGITKWISH@
73 CYGITKDEF = @CYGITKDEF@
74 CYGITKTEST = @CYGITKTEST@
75 CYGIMPORTLIB = @CYGIMPORTLIB@
76 CYGITKRES = @CYGITKRES@
77 CYGITKWISHRES = @CYGITKWISHRES@
81 SNITKWISH = @SNITKWISH@
83 SNITKTEST = @SNITKTEST@
84 SNIMPORTLIB = @SNIMPORTLIB@
86 SNITKWISHRES = @SNITKWISHRES@
93 ITKIMPORTLIB = @ITKIMPORTLIB@
95 ITKWISHRES = @ITKWISHRES@
98 # Directory in which to install the library of Itcl scripts and demos
99 # (note: you can set the ITK_LIBRARY environment variable at run-time to
100 # override the compiled-in location):
101 ITK_LIBRARY = $(prefix)/share/itk$(ITCL_VERSION)
103 # Directory in which to install the archive libitcl.a:
104 INSTALL_LIB_DIR = $(libdir)
106 # Directory in which to install the program itclsh:
107 INSTALL_BIN_DIR = $(bindir)
109 # Directory in which to install the include file itcl.h:
110 INSTALL_INCLUDE_DIR = $(includedir)
112 # Top-level directory for manual entries:
113 INSTALL_MAN_DIR = $(mandir)
115 # Directory in which to install manual entry for itclsh:
116 INSTALL_MAN1_DIR = $(INSTALL_MAN_DIR)/man1
118 # Directory in which to install manual entries for Itcl's C library
120 INSTALL_MAN3_DIR = $(INSTALL_MAN_DIR)/man3
122 # Directory in which to install manual entries for the built-in
123 # Tcl commands implemented by Itcl:
124 INSTALL_MANN_DIR = $(INSTALL_MAN_DIR)/mann
127 # Comment the following line to compile with symbols
130 # uncomment the following two lines to compile with TCL_MEM_DEBUG
131 #DEBUGDEFINES = -DTCL_MEM_DEBUG
134 $(TKLIBDIR)/tkConsole.$(OBJEXT) \
135 $(TMPDIR)/winMain.$(OBJEXT)
138 $(TMPDIR)/tkConsole.$(OBJEXT) \
139 $(TMPDIR)/tkTest.$(OBJEXT) \
140 $(TMPDIR)/tkSquare.$(OBJEXT) \
141 $(TMPDIR)/testMain.$(OBJEXT)
144 $(TMPDIR)/itk_archetype.$(OBJEXT) \
145 $(TMPDIR)/itk_cmds.$(OBJEXT) \
146 $(TMPDIR)/itk_option.$(OBJEXT) \
147 $(TMPDIR)/itk_util.$(OBJEXT) \
148 $(TMPDIR)/dllEntryPoint.$(OBJEXT)
150 DUMPEXTS = $(TCLLIBDIR)/dumpexts.exe
152 TCLLIB = @TCL_LIB_FILE@
153 TCL_BUILD_LIB_SPEC = @TCL_BUILD_LIB_SPEC@
154 TCL_LIB_FULL_PATH = @TCL_LIB_FULL_PATH@
155 TKLIB = @TK_LIB_FILE@
156 TK_BUILD_LIB_SPEC = @TK_BUILD_LIB_SPEC@
157 TK_LIB_FULL_PATH = @TK_LIB_FULL_PATH@
158 ITCLLIB = @ITCL_LIB_FILE@
159 ITCL_BUILD_LIB_SPEC = @ITCL_BUILD_LIB_SPEC@
160 ITCL_LIB_FULL_PATH = @ITCL_LIB_FULL_PATH@
162 TCL_INCLUDES = -I$(TCLSRCDIR)/generic -I$(TCLSRCDIR)/win
163 TK_INCLUDES = -I$(TKSRCDIR)/generic -I$(TKSRCDIR)/win -I$(TKSRCDIR)/xlib
164 ITCL_INCLUDES = -I$(ITCLSRCDIR)/generic -I$(ITCLSRCDIR)/win
165 ITK_INCLUDES = -I$(SRC_INC_DIR) -I$(SRC_WIN_DIR) $(ITCL_INCLUDES) \
166 $(TCL_INCLUDES) $(TK_INCLUDES)
168 ITK_DEFINES = -D__WIN32__ $(DEBUGDEFINES) -DDLL_BUILD -DBUILD_itk -D_DLL
169 ITK_CFLAGS = $(ITK_INCLUDES) $(ITK_DEFINES) $(CFLAGS)
173 ######################################################################
175 ######################################################################
177 conlflags = -Wl,--subsystem,console -mwindows
178 guilflags = -mwindows
181 baselibs = @BASELIBS@
185 guilibs = $(baselibs) $(winlibs)
186 conlibs = $(baselibs)
187 guilibsdll = $(libcdll) $(baselibs) $(winlibs)
188 conlibsdll = $(libcdll) $(baselibs)
194 release: $(ITKDLL) $(ITKWISH) $(ITKLIB)
195 all: $(ITKDLL) $(ITKWISH) $(ITKLIB)
197 $(CP) $(TCLLIBDIR)\*.dll
202 $(TMPDIR)/$(CYGITKDEF): $(ITKOBJS)
203 echo 'EXPORTS' > tmp.def
204 -for o in $(ITKOBJS); do \
205 $(NM) --extern-only --defined-only $$o | sed -e 's/[^ ]* [^ ]* //' -e 's/^_//' | fgrep -v DllEntryPoint | fgrep -v DllMain | fgrep -v impure_ptr >> tmp.def; \
207 mv tmp.def $(TMPDIR)/$(CYGITKDEF)
209 $(CYGITKDLL): $(ITKOBJS) $(TMPDIR)/$(CYGITKDEF) $(TMPDIR)/$(CYGITKRES)
210 $(CC) -s $(DLL_LDFLAGS) -Wl,--base-file,itk.base \
211 -o $(CYGITKDLL) $(ITKOBJS) $(TMPDIR)/$(CYGITKRES) \
212 $(TKLIBDIR)/$(TKLIB) $(ITCLLIBDIR)/$(ITCLLIB) $(TCLLIBDIR)/$(TCLLIB) \
213 $(DLL_LDLIBS) -mwindows -Wl,-e,_DllMain@12 \
214 -Wl,--image-base,0x66800000
215 $(DLLTOOL) --as=$(AS) --dllname $(CYGITKDLL) --def $(TMPDIR)/$(CYGITKDEF) \
216 --base-file itk.base --output-exp itk.exp
217 $(CC) -s $(DLL_LDFLAGS) -Wl,--base-file,itk.base -Wl,itk.exp \
218 -o $(CYGITKDLL) $(ITKOBJS) \
219 $(TKLIBDIR)/$(TKLIB) $(ITCLLIBDIR)/$(ITCLLIB) $(TCLLIBDIR)/$(TCLLIB) \
220 $(DLL_LDLIBS) -mwindows -Wl,-e,_DllMain@12 \
221 -Wl,--image-base,0x66800000
222 $(DLLTOOL) --as=$(AS) --dllname $(ITKDLL) --def $(TMPDIR)/$(CYGITKDEF) \
223 --base-file itk.base --output-exp itk.exp
224 $(CC) $(DLL_LDFLAGS) -Wl,itk.exp -o $(CYGITKDLL) $(ITKOBJS) \
225 $(TKLIBDIR)/$(TKLIB) $(ITCLLIBDIR)/$(ITCLLIB) $(TCLLIBDIR)/$(TCLLIB) \
226 $(DLL_LDLIBS) -mwindows \
227 -Wl,-e,_DllMain@12 -Wl,--image-base,0x66800000
229 $(CYGITKLIB): $(TMPDIR)/$(CYGITKDEF)
230 $(DLLTOOL) --as=$(AS) --dllname $(ITKDLL) --def $(TMPDIR)/$(CYGITKDEF) \
231 --output-lib $(CYGITKLIB)
233 $(CYGITKWISH): $(ITKWISHOBJS) $(CYGITKLIB) $(TMPDIR)/$(CYGITKWISHRES)
234 $(CC) $(ldebug) $(guilflags) $(ITKWISHOBJS) $(ITK_CFLAGS) $(TMPDIR)/$(CYGITKWISHRES) \
235 $(ITKLIB) $(TKLIBDIR)/$(TKLIB) \
236 $(ITCLLIBDIR)/$(ITCLLIB) $(TCLLIBDIR)/$(TCLLIB) \
240 $(CYGITKTEST): $(ITKTESTOBJS) $(CYGITKLIB) $(TMPDIR)/$(CYGITKWISHRES)
241 $(CC) $(ldebug) $(guilflags) $(WISHOBJS) $(ITK_CFLAGS) $(TMPDIR)/$(CYGITKWISHRES) \
242 $(CYGITKLIB) $(TKLIBDIR)/$(TKLIB) \
243 $(ITCLLIBDIR)/$(ITCLLIB) $(TCLLIBDIR)/$(TCLLIB) \
247 $(TMPDIR)/$(CYGITKRES): $(ROOT)/win/rc/itk.rc
248 $(WINDRES) --include $(ROOT)/win/rc --include $(ROOT)/generic \
249 --include $(ITCLSRCDIR)/generic \
250 --include $(TCLSRCDIR)/generic --include $(TKSRCDIR)/generic \
251 --define VS_VERSION_INFO=1 $(ROOT)/win/rc/itk.rc $(TMPDIR)/$(CYGITKRES)
253 $(TMPDIR)/$(CYGITKWISHRES): $(ROOT)/win/rc/itkwish.rc
254 $(WINDRES) --include $(ROOT)/win/rc --include $(ITCLSRCDIR)/generic \
255 --include $(TCLSRCDIR)/generic --include $(TKSRCDIR)/generic\
256 --include $(ROOT)/generic --define VS_VERSION_INFO=1 \
257 $(ROOT)/win/rc/itkwish.rc $(TMPDIR)/$(CYGITKWISHRES)
259 # Visual C++ specific targets
261 $(TMPDIR)/$(SNITKDEF): $(DUMPEXTS) $(ITKOBJS)
262 $(DUMPEXTS) -o $@ $(SNITKDLL) $(ITKOBJS)
264 $(SNITKDLL): $(ITKOBJS) $(TMPDIR)/$(SNITKDEF) $(TMPDIR)/$(SNITKRES) $(TCL_LIB_FULL_PATH) \
265 $(TK_LIB_FULL_PATH) $(ITCL_LIB_FULL_PATH)
266 link.exe -DEBUG -dll -def:$(TMPDIR)/$(SNITKDEF) -NODEFAULTLIB \
267 -out:$(SNITKDLL) $(guilibsdll) $(ITKOBJS) $(TMPDIR)/$(SNITKRES) \
268 $(TCL_BUILD_LIB_SPEC) $(TK_BUILD_LIB_SPEC) $(ITCL_BUILD_LIB_SPEC)
270 $(SNITKLIB) $(SNIMPORTLIB):
271 cp $(SNIMPORTLIB) $(SNITKLIB)
273 $(SNITKWISH): $(ITKWISHOBJS) $(SNITKLIB) $(TMPDIR)/$(SNITKWISHRES) $(TCL_LIB_FULL_PATH) \
274 $(TK_LIB_FULL_PATH) $(ITCL_LIB_FULL_PATH)
275 link.exe -DEBUG -NODEFAULTLIB -entry:WinMainCRTStartup \
276 -out:$@ $(guilibsdll) $(ITKWISHOBJS) $(TMPDIR)/$(SNITKWISHRES) \
277 $(SNITKLIB) $(TCL_BUILD_LIB_SPEC) $(TK_BUILD_LIB_SPEC) \
278 $(ITCL_BUILD_LIB_SPEC)
280 $(SNITKTEST): $(ITKWISHOBJS) $(ITCLTESTOBJS) $(SNITKLIB) $(TMPDIR)/$(SNITKWISHRES) \
281 $(TCL_LIB_FULL_PATH) $(TK_LIB_FULL_PATH) $(ITCL_LIB_FULL_PATH)
282 link.exe -DEBUG -NODEFAULTLIB -entry:WinMainCRTStartup \
283 -out $@ $(guilibsdll) $(ITKWISHOBJS) $(TMPDIR)/$(SNITKWISHRES) \
284 $(SNITKLIB) $(TCL_BUILD_LIB_SPEC) $(TK_BUILD_LIB_SPEC) \
285 $(ITCL_BUILD_LIB_SPEC)
287 $(TMPDIR)/$(SNITKWISHRES):: $(SRC_WIN_DIR)/rc/itkwish.rc
288 rc $(ITK_INCLUDES) -d__WIN32__ -dVS_VERSION_INFO=1 -fo$@ $?
290 $(TMPDIR)/$(SNITKRES):: $(SRC_WIN_DIR)/rc/itk.rc
291 rc $(ITK_INCLUDES) -d__WIN32__ -dVS_VERSION_INFO=1 -fo$@ $?
294 # Special case object file targets
297 $(TMPDIR)/testMain.$(OBJEXT): $(ROOT)/win/winMain.c
298 $(CC) -c $(ITK_CFLAGS) -DTCL_TEST -DTK_TEST -DSTATIC_BUILD -o $@ $?
300 $(TMPDIR)/winMain.$(OBJEXT): $(ROOT)/win/winMain.c
301 $(CC) -c $(ITK_CFLAGS) -DSTATIC_BUILD -o $@ $?
307 $(TMPDIR)/%.$(OBJEXT): $(SRC_INC_DIR)/%.c
308 $(CC) -c $(ITK_CFLAGS) -o $@ $<
310 $(TMPDIR)/%.$(OBJEXT): $(SRC_WIN_DIR)/%.c
311 $(CC) -c $(ITK_CFLAGS) -o $@ $<
315 rm -f $(TMPDIR)/*.$(OBJEXT) $(TMPDIR)/*.exp $(TMPDIR)/*.def
316 rm -f $(ITKLIB) $(ITKDLL) $(ITKDLL) $(ITKWISH)
319 Makefile: $(srcdir)/Makefile.in config.status
320 $(SHELL) config.status
322 config.status: $(srcdir)/configure
323 ./config.status --recheck
325 #----------------------------------------------------------------------
329 #----------------------------------------------------------------------
332 install:: install-basic install-binaries
336 @for i in $(INSTALL_LIB_DIR) $(INSTALL_BIN_DIR) ; \
338 if [ ! -d $$i ] ; then \
339 echo "Making directory $$i"; \
345 @echo "Installing $(ITKLIB) as $(INSTALL_LIB_DIR)/$(ITKLIB)"
346 @$(INSTALL_DATA) $(ITKLIB) $(INSTALL_LIB_DIR)/$(ITKLIB)
347 @echo "Installing $(ITKWISH) as $(INSTALL_BIN_DIR)/$(ITKWISH)"
348 @$(INSTALL_PROGRAM) $(ITKWISH) $(INSTALL_BIN_DIR)/$(ITKWISH)
349 @echo "Installing $(ITKDLL) as $(INSTALL_BIN_DIR)/$(ITKDLL)"
350 @$(INSTALL_PROGRAM) $(ITKDLL) $(INSTALL_BIN_DIR)/$(ITKDLL)
355 install-basic:: install-libraries install-headers \
360 @for i in $(INSTALL_INCLUDE_DIR); \
362 if [ ! -d $$i ] ; then \
363 echo "Making directory $$i"; \
369 @for i in $(SRC_INC_DIR)/itk.h; \
371 echo "Installing $$i"; \
372 $(INSTALL_DATA) $$i $(INSTALL_INCLUDE_DIR); \
376 @for i in $(prefix)/lib $(ITK_LIBRARY); \
378 if [ ! -d $$i ] ; then \
379 echo "Making directory $$i"; \
385 @for i in $(SRC_LIB_DIR)/*.tcl $(SRC_LIB_DIR)/*.itk; \
387 echo "Installing $$i"; \
388 $(INSTALL_DATA) $$i $(ITK_LIBRARY); \
391 @echo "Installing pkgIndex.tcl"
392 @$(INSTALL_DATA) $(srcdir)/pkgIndex.tcl $(ITK_LIBRARY)
394 @echo "Installing tclIndex"
395 @$(INSTALL_DATA) $(SRC_LIB_DIR)/tclIndex $(ITK_LIBRARY)
398 @for i in $(INSTALL_MAN_DIR) $(INSTALL_MAN1_DIR) \
399 $(INSTALL_MAN3_DIR) $(INSTALL_MANN_DIR) ; \
401 if [ ! -d $$i ] ; then \
402 echo "Making directory $$i"; \
408 @cd $(SRC_MAN_DIR); for i in *.n ; \
410 echo "Installing doc/$$i"; \
411 rm -f $(INSTALL_MANN_DIR)/$$i; \
412 sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \
413 $$i > $(INSTALL_MANN_DIR)/$$i; \
414 chmod 444 $(INSTALL_MANN_DIR)/$$i; \
418 echo "Installing doc/$$i"; \
419 rm -f $(INSTALL_MAN1_DIR)/$$i; \
420 sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \
421 $$i > $(INSTALL_MAN1_DIR)/$$i; \
422 chmod 444 $(INSTALL_MAN1_DIR)/$$i; \
425 install-info info installcheck:
427 install-minimal: install-libraries
428 @echo "Installing $(ITKDLL) as $(INSTALL_BIN_DIR)/$(ITKDLL)"
429 @$(INSTALL_PROGRAM) $(ITKDLL) $(INSTALL_BIN_DIR)/$(ITKDLL)