# Borland C++ 4.52 makefile
|
# Borland C++ 4.52 makefile
|
#
|
#
|
# Copyright (c) 1993-1996 Lucent Technologies
|
# Copyright (c) 1993-1996 Lucent Technologies
|
# based on original from
|
# based on original from
|
# Copyright (c) 1995-1996 Sun Microsystems, Inc.
|
# Copyright (c) 1995-1996 Sun Microsystems, Inc.
|
#
|
#
|
# See the file "license.terms" for information on usage and redistribution
|
# See the file "license.terms" for information on usage and redistribution
|
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
|
|
!include "..\..\Makefile.bc"
|
!include "..\..\Makefile.bc"
|
|
|
#
|
#
|
# Project directories
|
# Project directories
|
#
|
#
|
# ROOT = top of source tree
|
# ROOT = top of source tree
|
# TMPDIR = location where .obj files should be stored during build
|
# TMPDIR = location where .obj files should be stored during build
|
|
|
ROOT = ..
|
ROOT = ..
|
TMPDIR = .
|
TMPDIR = .
|
TARGET_LIB_ITCL = $(TARGET_LIB)\Itcl2.2
|
TARGET_LIB_ITCL = $(TARGET_LIB)\Itcl2.2
|
TARGET_DOC_ITCL = $(TARGET_DOC)\Itcl
|
TARGET_DOC_ITCL = $(TARGET_DOC)\Itcl
|
|
|
# uncomment the following line to compile with symbols
|
# uncomment the following line to compile with symbols
|
#DEBUG=1
|
#DEBUG=1
|
|
|
# uncomment the following two lines to compile with TCL_MEM_DEBUG
|
# uncomment the following two lines to compile with TCL_MEM_DEBUG
|
#DEBUGDEFINES =TCL_MEM_DEBUG
|
#DEBUGDEFINES =TCL_MEM_DEBUG
|
|
|
INCLUDES =$(BORLAND)\include;$(ROOT)\generic;$(ROOT)\win;$(TCLDIR)\generic
|
INCLUDES =$(BORLAND)\include;$(ROOT)\generic;$(ROOT)\win;$(TCLDIR)\generic
|
LIBDIRS =$(BORLAND)\lib;$(ROOT)\win
|
LIBDIRS =$(BORLAND)\lib;$(ROOT)\win
|
|
|
!ifndef DEBUG
|
!ifndef DEBUG
|
|
|
# these macros cause maximum optimization and no symbols
|
# these macros cause maximum optimization and no symbols
|
DEBUGLDFLAGS =
|
DEBUGLDFLAGS =
|
DEBUGCCFLAGS = -v- -vi- -O2
|
DEBUGCCFLAGS = -v- -vi- -O2
|
DEBUGLDFLAGS16 = -Oc -Oi -Oa -Or
|
DEBUGLDFLAGS16 = -Oc -Oi -Oa -Or
|
!else
|
!else
|
|
|
# these macros enable debugging
|
# these macros enable debugging
|
DEBUGLDFLAGS = -v
|
DEBUGLDFLAGS = -v
|
DEBUGCCFLAGS = -k -Od -v
|
DEBUGCCFLAGS = -k -Od -v
|
DEBUGLDFLAGS16 =
|
DEBUGLDFLAGS16 =
|
!endif
|
!endif
|
|
|
DEFINES = _RTLDLL;USE_TCLALLOC=0;$(DEBUGDEFINES);NO_DLFCN_H=1;ITCL_NAMESPACES=1
|
DEFINES = _RTLDLL;USE_TCLALLOC=0;$(DEBUGDEFINES);NO_DLFCN_H=1;ITCL_NAMESPACES=1
|
PROJECTCCFLAGS = $(DEBUGCCFLAGS) -w-par -w-stu
|
PROJECTCCFLAGS = $(DEBUGCCFLAGS) -w-par -w-stu
|
|
|
CFLAGS16_dll = $(PROJECTCCFLAGS) -I$(INCLUDES) -D$(DEFINES) -WD -ml -c -3 -d -w
|
CFLAGS16_dll = $(PROJECTCCFLAGS) -I$(INCLUDES) -D$(DEFINES) -WD -ml -c -3 -d -w
|
|
|
LNFLAGS_exe = -Tpe -aa -c $(DEBUGLDFLAGS) $(BORLAND)\lib\c0w32
|
LNFLAGS_exe = -Tpe -aa -c $(DEBUGLDFLAGS) $(BORLAND)\lib\c0w32
|
LNFLAGS_CONSOLE_exe = -Tpe -ap -c $(DEBUGLDFLAGS) $(BORLAND)\lib\c0x32
|
LNFLAGS_CONSOLE_exe = -Tpe -ap -c $(DEBUGLDFLAGS) $(BORLAND)\lib\c0x32
|
LNFLAGS_dll = -Tpd -aa -c $(DEBUGLDFLAGS) $(BORLAND)\lib\c0d32
|
LNFLAGS_dll = -Tpd -aa -c $(DEBUGLDFLAGS) $(BORLAND)\lib\c0d32
|
LNFLAGS16_dll = -Twd -c -C -A=16 $(DEBUGLDFLAGS16) $(BORLAND)\lib\c0dl.obj
|
LNFLAGS16_dll = -Twd -c -C -A=16 $(DEBUGLDFLAGS16) $(BORLAND)\lib\c0dl.obj
|
|
|
LNLIBS_exe = $(ITCLLIB) $(TCLLIBDIR)\$(TCLLIB) import32 cw32i
|
LNLIBS_exe = $(ITCLLIB) $(TCLLIBDIR)\$(TCLLIB) import32 cw32i
|
LNLIBS_dll = $(TCLLIBDIR)\$(TCLLIB) import32 cw32i
|
LNLIBS_dll = $(TCLLIBDIR)\$(TCLLIB) import32 cw32i
|
LNLIBS16_dll = import cwl
|
LNLIBS16_dll = import cwl
|
|
|
#
|
#
|
# Global makefile settings
|
# Global makefile settings
|
#
|
#
|
|
|
.AUTODEPEND
|
.AUTODEPEND
|
.CACHEAUTODEPEND
|
.CACHEAUTODEPEND
|
|
|
.suffixes: .c .dll .lib .obj .exe
|
.suffixes: .c .dll .lib .obj .exe
|
|
|
.path.c=$(ROOT)\win;$(ROOT)\generic
|
.path.c=$(ROOT)\win;$(ROOT)\generic
|
.path.obj=$(TMPDIR)
|
.path.obj=$(TMPDIR)
|
.path.dll=$(ROOT)\win;$(WINDIR);$(WINDIR)\SYSTEM32;$(WINDIR)\SYSTEM
|
.path.dll=$(ROOT)\win;$(WINDIR);$(WINDIR)\SYSTEM32;$(WINDIR)\SYSTEM
|
|
|
ITCLSHOBJS = \
|
ITCLSHOBJS = \
|
$(TMPDIR)\tclAppInit.obj
|
$(TMPDIR)\tclAppInit.obj
|
|
|
ITCLOBJS = \
|
ITCLOBJS = \
|
$(TMPDIR)\itcl_bicmds.obj \
|
$(TMPDIR)\itcl_bicmds.obj \
|
$(TMPDIR)\itcl_class.obj \
|
$(TMPDIR)\itcl_class.obj \
|
$(TMPDIR)\itcl_cmds.obj \
|
$(TMPDIR)\itcl_cmds.obj \
|
$(TMPDIR)\itcl_linkage.obj \
|
$(TMPDIR)\itcl_linkage.obj \
|
$(TMPDIR)\itcl_methods.obj \
|
$(TMPDIR)\itcl_methods.obj \
|
$(TMPDIR)\itcl_objects.obj \
|
$(TMPDIR)\itcl_objects.obj \
|
$(TMPDIR)\itcl_obsolete.obj \
|
$(TMPDIR)\itcl_obsolete.obj \
|
$(TMPDIR)\itcl_parse.obj \
|
$(TMPDIR)\itcl_parse.obj \
|
$(TMPDIR)\itcl_util.obj \
|
$(TMPDIR)\itcl_util.obj \
|
$(TMPDIR)\dllEntryPoint.obj
|
$(TMPDIR)\dllEntryPoint.obj
|
|
|
|
|
DUMPEXTS = $(TCLLIBDIR)\dumpexts.exe
|
DUMPEXTS = $(TCLLIBDIR)\dumpexts.exe
|
ITCLSH = itclsh.exe
|
ITCLSH = itclsh.exe
|
|
|
#
|
#
|
# Targets
|
# Targets
|
#
|
#
|
|
|
all: cfgcln cfgdll $(ITCLDLL) cfgexe $(ITCLSH) cfgcln
|
all: cfgcln cfgdll $(ITCLDLL) cfgexe $(ITCLSH) cfgcln
|
test: $(ITCLSH)
|
test: $(ITCLSH)
|
$(CP) $(TCLLIBDIR)\*.dll
|
$(CP) $(TCLLIBDIR)\*.dll
|
$(ITCLSH) <<|
|
$(ITCLSH) <<|
|
cd ../tests
|
cd ../tests
|
source all
|
source all
|
|
|
|
|
|
|
install: all
|
install: all
|
$(MKDIR) "$(TARGET_ROOT)"
|
$(MKDIR) "$(TARGET_ROOT)"
|
$(MKDIR) "$(TARGET_BIN)"
|
$(MKDIR) "$(TARGET_BIN)"
|
$(MKDIR) "$(TARGET_LIB_ROOT)"
|
$(MKDIR) "$(TARGET_LIB_ROOT)"
|
$(MKDIR) "$(TARGET_LIB)"
|
$(MKDIR) "$(TARGET_LIB)"
|
$(MKDIR) "$(TARGET_LIB_ITCL)"
|
$(MKDIR) "$(TARGET_LIB_ITCL)"
|
$(MKDIR) "$(TARGET_INCLUDE_ROOT)"
|
$(MKDIR) "$(TARGET_INCLUDE_ROOT)"
|
$(MKDIR) "$(TARGET_INCLUDE)"
|
$(MKDIR) "$(TARGET_INCLUDE)"
|
$(MKDIR) "$(TARGET_DOC)"
|
$(MKDIR) "$(TARGET_DOC)"
|
$(MKDIR) "$(TARGET_DOC_ITCL)"
|
$(MKDIR) "$(TARGET_DOC_ITCL)"
|
$(CP) $(TMPDIR)\$(ITCLSH) "$(TARGET_BIN)"
|
$(CP) $(TMPDIR)\$(ITCLSH) "$(TARGET_BIN)"
|
$(CP) $(TMPDIR)\$(ITCLDLL) "$(TARGET_BIN)"
|
$(CP) $(TMPDIR)\$(ITCLDLL) "$(TARGET_BIN)"
|
$(CP) $(ROOT)\generic\itcl.h "$(TARGET_INCLUDE)"
|
$(CP) $(ROOT)\generic\itcl.h "$(TARGET_INCLUDE)"
|
$(CP) $(ROOT)\library\*.* "$(TARGET_LIB_ITCL)"
|
$(CP) $(ROOT)\library\*.* "$(TARGET_LIB_ITCL)"
|
$(CP) $(ROOT)\win\*.tcl "$(TARGET_LIB_ITCL)"
|
$(CP) $(ROOT)\win\*.tcl "$(TARGET_LIB_ITCL)"
|
$(CP) $(ROOT)\..\html\Itcl\*.* "$(TARGET_DOC_ITCL)"
|
$(CP) $(ROOT)\..\html\Itcl\*.* "$(TARGET_DOC_ITCL)"
|
|
|
# Implicit Targets
|
# Implicit Targets
|
|
|
.c.obj:
|
.c.obj:
|
@$(BCC32) {$< }
|
@$(BCC32) {$< }
|
|
|
.dll.lib:
|
.dll.lib:
|
$(IMPLIB) -c $@ $<
|
$(IMPLIB) -c $@ $<
|
|
|
#.rc.res:
|
#.rc.res:
|
# $(RC) -i$(INCLUDES) -d__WIN32__;$(DEFINES) $<
|
# $(RC) -i$(INCLUDES) -d__WIN32__;$(DEFINES) $<
|
|
|
.rc.res:
|
.rc.res:
|
$(RC) -i$(INCLUDES) -d__WIN32__; $<
|
$(RC) -i$(INCLUDES) -d__WIN32__; $<
|
|
|
|
|
#
|
#
|
# Configuration file targets - these files are implicitly used by the compiler
|
# Configuration file targets - these files are implicitly used by the compiler
|
#
|
#
|
|
|
cfgdll:
|
cfgdll:
|
@$(CP) &&|
|
@$(CP) &&|
|
-n$(TMPDIR) -I$(INCLUDES) -c -WD
|
-n$(TMPDIR) -I$(INCLUDES) -c -WD
|
-D$(DEFINES) -3 -d -w $(PROJECTCCFLAGS)
|
-D$(DEFINES) -3 -d -w $(PROJECTCCFLAGS)
|
| bcc32.cfg >NUL
|
| bcc32.cfg >NUL
|
|
|
cfgexe:
|
cfgexe:
|
@$(CP) &&|
|
@$(CP) &&|
|
-n$(TMPDIR) -I$(INCLUDES) -c -W
|
-n$(TMPDIR) -I$(INCLUDES) -c -W
|
-D$(DEFINES) -3 -d -w $(PROJECTCCFLAGS)
|
-D$(DEFINES) -3 -d -w $(PROJECTCCFLAGS)
|
| bcc32.cfg >NUL
|
| bcc32.cfg >NUL
|
|
|
cfgcln:
|
cfgcln:
|
-@$(RM) *.cfg
|
-@$(RM) *.cfg
|
|
|
#
|
#
|
# Executable targets
|
# Executable targets
|
#
|
#
|
|
|
$(ITCLDLL): $(ITCLOBJS) itcl.def itcl.res
|
$(ITCLDLL): $(ITCLOBJS) itcl.def itcl.res
|
$(TLINK32) $(LNFLAGS_dll) @&&|
|
$(TLINK32) $(LNFLAGS_dll) @&&|
|
$(ITCLOBJS)
|
$(ITCLOBJS)
|
$@
|
$@
|
-x
|
-x
|
$(LNLIBS_dll)
|
$(LNLIBS_dll)
|
|, itcl.def, itcl.res
|
|, itcl.def, itcl.res
|
|
|
$(ITCLSH): $(ITCLSHOBJS) $(ITCLLIB) itclsh.res
|
$(ITCLSH): $(ITCLSHOBJS) $(ITCLLIB) itclsh.res
|
$(TLINK32) $(LNFLAGS_CONSOLE_exe) @&&|
|
$(TLINK32) $(LNFLAGS_CONSOLE_exe) @&&|
|
$(ITCLSHOBJS)
|
$(ITCLSHOBJS)
|
$@
|
$@
|
-x
|
-x
|
$(LNLIBS_exe)
|
$(LNLIBS_exe)
|
|, &&|
|
|, &&|
|
EXETYPE WINDOWS
|
EXETYPE WINDOWS
|
CODE PRELOAD MOVEABLE DISCARDABLE
|
CODE PRELOAD MOVEABLE DISCARDABLE
|
DATA PRELOAD MOVEABLE MULTIPLE
|
DATA PRELOAD MOVEABLE MULTIPLE
|
|, itclsh.res
|
|, itclsh.res
|
|
|
|
|
# The following rule automatically generates a tcl.def file containing
|
# The following rule automatically generates a tcl.def file containing
|
# an export entry for every public symbol in the tcl.dll library.
|
# an export entry for every public symbol in the tcl.dll library.
|
|
|
itcl.def: $(ITCLOBJS)
|
itcl.def: $(ITCLOBJS)
|
$(DUMPEXTS) -o itcl.def $(ITCLDLL) @&&|
|
$(DUMPEXTS) -o itcl.def $(ITCLDLL) @&&|
|
$(ITCLOBJS)
|
$(ITCLOBJS)
|
|
|
|
|
|
|
|
|
# debugging rules, the .dll and .exe files must be in the same
|
# debugging rules, the .dll and .exe files must be in the same
|
# directory as the object files for debugging purposes
|
# directory as the object files for debugging purposes
|
|
|
$(TMPDIR)\$(ITCLDLL): $(ITCLDLL)
|
$(TMPDIR)\$(ITCLDLL): $(ITCLDLL)
|
$(CP) $(ITCLDLL) $(TMPDIR)
|
$(CP) $(ITCLDLL) $(TMPDIR)
|
|
|
$(TMPDIR)\$(TCLDLL): $(TCLLIBDIR)\$(TCLDLL)
|
$(TMPDIR)\$(TCLDLL): $(TCLLIBDIR)\$(TCLDLL)
|
$(CP) $(TCLLIBDIR)\$(TCLDLL) $(TMPDIR)
|
$(CP) $(TCLLIBDIR)\$(TCLDLL) $(TMPDIR)
|
|
|
$(TMPDIR)\$(ITCLSH): $(ITCLSH)
|
$(TMPDIR)\$(ITCLSH): $(ITCLSH)
|
$(CP) $(ITCLSH) $(TMPDIR)
|
$(CP) $(ITCLSH) $(TMPDIR)
|
|
|
debug: $(TMPDIR)\$(ITCLDLL) $(TMPDIR)\$(TCLDLL)
|
debug: $(TMPDIR)\$(ITCLDLL) $(TMPDIR)\$(TCLDLL)
|
|
|
# remove all generated files
|
# remove all generated files
|
|
|
clean:
|
clean:
|
-@$(RM) *.exe
|
-@$(RM) *.exe
|
-@$(RM) *.lib
|
-@$(RM) *.lib
|
-@$(RM) *.dll
|
-@$(RM) *.dll
|
-@$(RM) *.res
|
-@$(RM) *.res
|
-@$(RM) itcl.def
|
-@$(RM) itcl.def
|
-@$(RM) $(TMPDIR)\*.obj
|
-@$(RM) $(TMPDIR)\*.obj
|
-@$(RM) *.cfg
|
-@$(RM) *.cfg
|
|
|