prefix = @prefix@
exec_prefix = @exec_prefix@
VPATH = @srcdir@:@srcdir@/../generic:@srcdir@/../compat
srcdir = @srcdir@
libdir = @libdir@
bindir = @bindir@
includedir = @includedir@
datadir = @datadir@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
CC = @CC@
CFLAGS = @CFLAGS@
NM = @NM@
AS = @AS@
LD = @LD@
DLLTOOL = @DLLTOOL@
WINDRES = @WINDRES@
DLL_LDFLAGS = @DLL_LDFLAGS@
DLL_LDLIBS = @DLL_LDLIBS@
TCL_ALLOC_OBJ = @TCL_ALLOC_OBJ@
OBJEXT=@OBJEXT@
DIRVERSION = @TCL_VERSION@
INSTALL_ROOT =
TCL_LIBRARY = $(datadir)/tcl$(DIRVERSION)
SCRIPT_INSTALL_DIR = $(INSTALL_ROOT)$(TCL_LIBRARY)
LIB_INSTALL_DIR = $(INSTALL_ROOT)$(libdir)
BIN_INSTALL_DIR = $(INSTALL_ROOT)$(bindir)
INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(includedir)
ROOT = $(srcdir)/..
TMPDIR = .
TOOLS32 = c:\msdev
TOOLS16 = c:\msvc
MACHINE = IX86
NODEBUG=1
VERSION = 80
TCLLIB = libtcl$(VERSION).a
TCLDLL = cygtcl$(VERSION).dll
TCLPLUGINLIB = libtcl$(VERSION)p.a
TCLPLUGINDLL = cygtcl$(VERSION)p.dll
TCL16DLL = TCLSH = cygtclsh$(VERSION).exe
TCLSHP = cygtclshp$(VERSION).exe
TCLTEST = tcltest.exe
DUMPEXTS = TCLPIPEDLL = cygtclpip$(VERSION).dll
TCLREGDLL = cygtclreg$(VERSION).dll
CAT16 = CAT32 = cat32.exe
ifeq ($(OBJEXT),obj)
TCL_ALLOC_OBJ=$(TMPDIR)/tclAlloc.$(OBJEXT)
endif
TCLSHOBJS = \
$(TMPDIR)/tclAppInit.$(OBJEXT)
TCLTESTOBJS = \
$(TMPDIR)/tclTest.$(OBJEXT) \
$(TMPDIR)/tclTestObj.$(OBJEXT) \
$(TMPDIR)/tclTestProcBodyObj.$(OBJEXT) \
$(TMPDIR)/tclWinTest.$(OBJEXT) \
$(TMPDIR)/testMain.$(OBJEXT)
TCLOBJS = \
$(TMPDIR)/panic.$(OBJEXT) \
$(TMPDIR)/regexp.$(OBJEXT) \
$(TMPDIR)/strftime.$(OBJEXT) \
$(TCL_ALLOC_OBJ) \
$(TMPDIR)/tclAsync.o \
$(TMPDIR)/tclBasic.o \
$(TMPDIR)/tclBinary.o \
$(TMPDIR)/tclCkalloc.o \
$(TMPDIR)/tclClock.o \
$(TMPDIR)/tclCmdAH.o \
$(TMPDIR)/tclCmdIL.o \
$(TMPDIR)/tclCmdMZ.o \
$(TMPDIR)/tclCompExpr.o \
$(TMPDIR)/tclCompile.o \
$(TMPDIR)/tclDate.o \
$(TMPDIR)/tclEnv.o \
$(TMPDIR)/tclEvent.o \
$(TMPDIR)/tclExecute.o \
$(TMPDIR)/tclFCmd.o \
$(TMPDIR)/tclFileName.o \
$(TMPDIR)/tclGet.o \
$(TMPDIR)/tclHash.o \
$(TMPDIR)/tclHistory.o \
$(TMPDIR)/tclIndexObj.o \
$(TMPDIR)/tclInterp.o \
$(TMPDIR)/tclIO.o \
$(TMPDIR)/tclIOCmd.o \
$(TMPDIR)/tclIOSock.o \
$(TMPDIR)/tclIOUtil.o \
$(TMPDIR)/tclLink.o \
$(TMPDIR)/tclListObj.o \
$(TMPDIR)/tclLoad.o \
$(TMPDIR)/tclMain.o \
$(TMPDIR)/tclNamesp.o \
$(TMPDIR)/tclNotify.o \
$(TMPDIR)/tclObj.o \
$(TMPDIR)/tclParse.o \
$(TMPDIR)/tclPipe.o \
$(TMPDIR)/tclPkg.o \
$(TMPDIR)/tclPosixStr.o \
$(TMPDIR)/tclPreserve.o \
$(TMPDIR)/tclProc.o \
$(TMPDIR)/tclResolve.o \
$(TMPDIR)/tclStringObj.o \
$(TMPDIR)/tclTimer.o \
$(TMPDIR)/tclUtil.o \
$(TMPDIR)/tclVar.o \
$(TMPDIR)/tclWin32Dll.o \
$(TMPDIR)/tclWinChan.o \
$(TMPDIR)/tclWinError.o \
$(TMPDIR)/tclWinFCmd.o \
$(TMPDIR)/tclWinFile.o \
$(TMPDIR)/tclWinInit.o \
$(TMPDIR)/tclWinLoad.o \
$(TMPDIR)/tclWinMtherr.o \
$(TMPDIR)/tclWinNotify.o \
$(TMPDIR)/tclWinPipe.o \
$(TMPDIR)/tclWinSock.o \
$(TMPDIR)/tclWinTime.o
cc32 = $(TOOLS32)\bin\cl.exe
link32 = $(TOOLS32)\bin\link.exe
rc32 = $(TOOLS32)\bin\rc.exe
include32 = -I$(TOOLS32)\include
cc16 = $(TOOLS16)\bin\cl.exe
link16 = $(TOOLS16)\bin\link.exe
rc16 = $(TOOLS16)\bin\rc.exe
include16 = -I$(TOOLS16)\include
WINDIR = $(ROOT)/win
GENERICDIR = $(ROOT)/generic
TCL_INCLUDES = -I$(WINDIR) -I$(GENERICDIR)
TCL_DEFINES = -D__WIN32__ $(DEBUGDEFINES)
TCL_CFLAGS = $(cdebug) $(cflags) $(cvarsdll) \
$(TCL_INCLUDES) $(TCL_DEFINES) $(CFLAGS)
CON_CFLAGS = $(cdebug) $(cflags) $(cvars) -DCONSOLE
DOS_CFLAGS = $(cdebug) $(cflags) $(include16) -AL
DLL16_CFLAGS = $(cdebug) $(cflags) $(include16) -ALw
linkdebug =
conlflags = -Wl,--subsystem,console -mwindows
conlibsdll =
lcommon = /NODEFAULTLIB /RELEASE /NOLOGO
conlflags = -Wl,--subsystem,console -mwindows
guilflags = -mwindows
dlllflags =
ifeq ($(OBJEXT),o)
baselibs = -lkernel32 $(optlibs) -ladvapi32 -luser32
winlibs = $(baselibs) -lgdi32 -lcomdlg32 -lwinspool
else
baselibs = kernel32.lib $(optlibs) advapi32.lib user32.lib
winlibs = $(baselibs) gdi32.lib comdlg32.lib winspool.lib
libcdll = msvcrt.lib oldnames.lib
endif
guilibs = $(libc) $(winlibs)
conlibs = $(libc) $(baselibs)
guilibsdll = $(libcdll) $(winlibs)
conlibsdll = $(libcdll) $(baselibs)
ccommon = -c -W3 -nologo -YX -Dtry=__try -Dexcept=__except
cvars = -DWIN32 -D_WIN32
cvarsmt = $(cvars) -D_MT
cvarsdll = $(cvarsmt) -D_DLL
release: $(TCLSH) dlls $(TCLLIB)
dlls: $(TCLDLL) $(TCLPIPEDLL) $(TCLREGDLL)
all: $(TCLSH) dlls $(CAT16) $(CAT32) $(TCLLIB)
tcltest: $(TCLTEST) dlls $(CAT16) $(CAT32)
plugin: $(TCLPLUGINDLL) $(TCLSHP)
test: $(TCLTEST) dlls $(CAT16) $(CAT32)
( echo cd $(ROOT)/tests\; source all ) | $(TCLTEST)
install: install-binaries install-libraries
install-binaries: $(TCLDLL) $(TCLLIB) $(TCLSH) $(TCLPIPEDLL)
@for i in $(LIB_INSTALL_DIR) $(BIN_INSTALL_DIR) ; \
do \
if [ ! -d $$i ] ; then \
echo "Making directory $$i"; \
mkdir $$i; \
chmod 755 $$i; \
else true; \
fi; \
done;
@echo "Installing $(TCLLIB)"
@$(INSTALL_DATA) $(TCLLIB) $(LIB_INSTALL_DIR)/$(TCLLIB)
@chmod 555 $(LIB_INSTALL_DIR)/$(TCLLIB)
@echo "Installing tclsh"
@$(INSTALL_PROGRAM) $(TCLSH) $(BIN_INSTALL_DIR)/$(TCLSH)
@echo "Installing tclConfig.sh"
@$(INSTALL_DATA) ../unix/tclConfig.sh $(LIB_INSTALL_DIR)/tclConfig.sh
install-libraries:
@echo "Installing DLL"
@$(INSTALL_DATA) $(TCLDLL) $(BIN_INSTALL_DIR)/$(TCLDLL)
@$(INSTALL_DATA) $(TCLPIPEDLL) $(BIN_INSTALL_DIR)/$(TCLPIPEDLL)
@$(INSTALL_DATA) $(TCLREGDLL) $(BIN_INSTALL_DIR)/$(TCLREGDLL)
@for i in $(INSTALL_ROOT)@datadir@ $(INCLUDE_INSTALL_DIR) \
$(SCRIPT_INSTALL_DIR) ; \
do \
if [ ! -d $$i ] ; then \
echo "Making directory $$i"; \
mkdir $$i; \
chmod 755 $$i; \
else true; \
fi; \
done;
@for i in http2.0 http1.0 opt0.1 ; \
do \
if [ ! -d $(SCRIPT_INSTALL_DIR)/$$i ] ; then \
echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \
mkdir $(SCRIPT_INSTALL_DIR)/$$i; \
chmod 755 $(SCRIPT_INSTALL_DIR)/$$i; \
else true; \
fi; \
done;
@echo "Installing tcl.h"
@$(INSTALL_DATA) $(GENERICDIR)/tcl.h $(INCLUDE_INSTALL_DIR)/tcl.h
@for i in $(ROOT)/library/*.tcl $(ROOT)/library/tclIndex $(WINDIR)/tclAppInit.c; \
do \
echo "Installing $$i"; \
$(INSTALL_DATA) $$i $(SCRIPT_INSTALL_DIR); \
done;
@for i in http2.0 http1.0 opt0.1 ; \
do \
for j in $(ROOT)/library/$$i/*.tcl ; \
do \
echo "Installing $$j"; \
$(INSTALL_DATA) $$j $(SCRIPT_INSTALL_DIR)/$$i; \
done; \
done;
install-minimal:
@echo "Installing DLL"
@$(INSTALL_DATA) $(TCLDLL) $(BIN_INSTALL_DIR)/$(TCLDLL)
@$(INSTALL_DATA) $(TCLPIPEDLL) $(BIN_INSTALL_DIR)/$(TCLPIPEDLL)
@$(INSTALL_DATA) $(TCLREGDLL) $(BIN_INSTALL_DIR)/$(TCLREGDLL)
@for i in $(INSTALL_ROOT)@datadir@ $(SCRIPT_INSTALL_DIR) ; \
do \
if [ ! -d $$i ] ; then \
echo "Making directory $$i"; \
mkdir $$i; \
chmod 755 $$i; \
else true; \
fi; \
done;
@for i in http2.0 http1.0 opt0.1 ; \
do \
if [ ! -d $(SCRIPT_INSTALL_DIR)/$$i ] ; then \
echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \
mkdir $(SCRIPT_INSTALL_DIR)/$$i; \
chmod 755 $(SCRIPT_INSTALL_DIR)/$$i; \
else true; \
fi; \
done;
@for i in $(ROOT)/library/*.tcl $(ROOT)/library/tclIndex; \
do \
echo "Installing $$i"; \
$(INSTALL_DATA) $$i $(SCRIPT_INSTALL_DIR); \
done;
@for i in http2.0 http1.0 opt0.1 ; \
do \
for j in $(ROOT)/library/$$i/*.tcl ; \
do \
echo "Installing $$j"; \
$(INSTALL_DATA) $$j $(SCRIPT_INSTALL_DIR)/$$i; \
done; \
done;
ifeq ($(OBJEXT),o)
$(TCLDLL): $(TCLOBJS) tclres.$(OBJEXT) $(TMPDIR)/tclcyg.def
$(CC) -s $(DLL_LDFLAGS) -Wl,--base-file,tcl.base -o $(TCLDLL) $(TCLOBJS) tclres.$(OBJEXT) $(DLL_LDLIBS) -mwindows -Wl,-e,_DllMain@12 -Wl,--image-base,0x66000000
$(DLLTOOL) --as=$(AS) --dllname $(TCLDLL) --def $(TMPDIR)/tclcyg.def --base-file tcl.base --output-exp tcl.exp
$(CC) -s $(DLL_LDFLAGS) -Wl,--base-file,tcl.base,tcl.exp -o $(TCLDLL) $(TCLOBJS) tclres.$(OBJEXT) $(DLL_LDLIBS) -mwindows -Wl,-e,_DllMain@12 -Wl,--image-base,0x66000000
$(DLLTOOL) --as=$(AS) --dllname $(TCLDLL) --def $(TMPDIR)/tclcyg.def --base-file tcl.base --output-exp tcl.exp
$(CC) $(DLL_LDFLAGS) -Wl,tcl.exp -o $(TCLDLL) $(TCLOBJS) tclres.$(OBJEXT) $(DLL_LDLIBS) -mwindows -Wl,-e,_DllMain@12 -Wl,--image-base,0x66000000
else
$(TCLDLL): $(TCLOBJS) $(TMPDIR)/tclcyg.def tclres.$(OBJEXT)
link.exe $(ldebug) $(dlllflags) -dll -def:$(TMPDIR)/tclcyg.def -NODEFAULTLIB \
-out:$(TCLDLL) tclres.$(OBJEXT) $(guilibsdll) $(TCLOBJS) \
-entry:_DllMainCRTStartup@12
mv cygtcl80.lib $(TCLLIB)
endif
ifeq ($(OBJEXT),o)
$(TCLLIB): $(TMPDIR)/tclcyg.def
$(DLLTOOL) --as=$(AS) --dllname $(TCLDLL) --def $(TMPDIR)/tclcyg.def --output-lib $(TCLLIB)
else
$(TCLLIB): $(TCLDLL)
endif
$(TCLPLUGINLIB): $(TMPDIR)/plugin.def
$(DLLTOOL) --as=$(AS) --dllname $(TCLPLUGINDLL) --def $(TMPDIR)/plugin.def --output-lib $(TCLPLUGINLIB)
$(TCLPLUGINDLL): $(TCLOBJS) $(TMPDIR)/plugin.def tclres.$(OBJEXT)
$(CC) -s $(DLL_LDFLAGS) -Wl,--base-file,tclplugin.base -o $(TCLPLUGINDLL) $(TCLOBJS) tclres.$(OBJEXT) $(DLL_LDLIBS) -mwindows -Wl,-e,_DllMain@12 -Wl,--image-base,0x66600000
$(DLLTOOL) --as=$(AS) --dllname $(TCLPLUGINDLL) --def $(TMPDIR)/plugin.def --base-file tclplugin.base --output-exp tcl.exp
$(CC) -s $(DLL_LDFLAGS) -Wl,--base-file,tclplugin.base -Wl,tcl.exp -o $(TCLPLUGINDLL) $(TCLOBJS) tclres.$(OBJEXT) $(DLL_LDLIBS) -mwindows -Wl,-e,_DllMain@12 -Wl,--image-base,0x66600000
$(DLLTOOL) --as=$(AS) --dllname $(TCLPLUGINDLL) --def $(TMPDIR)/plugin.def --base-file tclplugin.base --output-exp tcl.exp
$(CC) $(DLL_LDFLAGS) -Wl,tcl.exp -o $(TCLPLUGINDLL) $(TCLOBJS) tclres.$(OBJEXT) $(DLL_LDLIBS) -mwindows -Wl,-e,_DllMain@12 -Wl,--image-base,0x66600000
ifeq ($(OBJEXT),o)
$(TCLSH): $(TCLSHOBJS) tclshres.$(OBJEXT) $(TCLLIB)
$(CC) $(linkdebug) $(conlflags) -Wl,--stack=0x2300000 \
-o $@ $(conlibsdll) $(TCLSHOBJS) tclshres.$(OBJEXT) $(TCLLIB)
else
$(TCLSH): $(TCLSHOBJS) tclshres.$(OBJEXT) $(TCLLIB)
link $(linkdebug) $(conlflags) $(tclsh_flags) -NODEFAULTLIB -subsystem:console -entry:mainCRTStartup \
-out:$@ $(conlibsdll) $(TCLSHOBJS) tclshres.$(OBJEXT) $(TCLLIB)
endif
$(TCLSHP): $(TCLSHOBJS) $(TCLPLUGINLIB) tclshres.$(OBJEXT)
$(CC) $(linkdebug) $(conlflags) -Wl,--stack=0x2300000 \
-o $@ $(conlibsdll) $(TCLSHOBJS) tclshres.$(OBJEXT) $(TCLPLUGINLIB)
$(TCLTEST): $(TCLTESTOBJS) tclshres.$(OBJEXT) $(TCLLIB)
$(CC) $(linkdebug) $(conlflags) -Wl,--stack=0x2300000 \
-o $@ $(conlibsdll) $(TCLTESTOBJS) tclshres.$(OBJEXT) $(TCLLIB)
ifeq ($(OBJEXT),o)
$(TCLPIPEDLL): $(WINDIR)/stub16.c
$(CC) -c $(CON_CFLAGS) $(WINDIR)/stub16.c
$(CC) $(linkdebug) $(conlflags) -o $@ $(TMPDIR)/stub16.$(OBJEXT) $(guilibs)
else
$(TCLPIPEDLL): $(WINDIR)/stub16.c
$(CC) -c $(CON_CFLAGS) -Fo$(TMPDIR)/ $(WINDIR)/stub16.c
link $(ldebug) $(conlflags) -out:$@ $(TMPDIR)/stub16.obj $(guilibsdll)
endif
ifeq ($(OBJEXT),o)
$(TCLREGDLL): $(TMPDIR)/tclWinReg.$(OBJEXT) $(TCLLIB)
echo EXPORTS > $(TMPDIR)/tclreg.def
echo Registry_Init >> $(TMPDIR)/tclreg.def
$(CC) -s $(DLL_LDFLAGS) -Wl,--base-file,tclreg.base -o $(TCLREGDLL) $(TMPDIR)/tclWinReg.$(OBJEXT) $(TCLLIB) $(DLL_LDLIBS) -ladvapi32 -mwindows -Wl,-e,_DllEntryPoint@12 -Wl,--image-base,0x66200000
$(DLLTOOL) --as=$(AS) --dllname $(TCLREGDLL) --def $(TMPDIR)/tclreg.def --base-file tclreg.base --output-exp tclreg.exp
$(CC) -s $(DLL_LDFLAGS) -Wl,--base-file,tclreg.base -Wl,tclreg.exp -o $(TCLREGDLL) $(TMPDIR)/tclWinReg.$(OBJEXT) $(TCLLIB) $(DLL_LDLIBS) -ladvapi32 -mwindows -Wl,-e,_DllEntryPoint@12 -Wl,--image-base,0x66200000
$(DLLTOOL) --as=$(AS) --dllname $(TCLREGDLL) --def $(TMPDIR)/tclreg.def --base-file tclreg.base --output-exp tclreg.exp
$(CC) $(DLL_LDFLAGS) -Wl,tclreg.exp -o $(TCLREGDLL) $(TMPDIR)/tclWinReg.$(OBJEXT) $(TCLLIB) $(DLL_LDLIBS) -ladvapi32 -mwindows -Wl,-e,_DllEntryPoint@12 -Wl,--image-base,0x66200000
rm -f $(TMPDIR)/tclreg.def
else
$(TCLREGDLL): $(TMPDIR)/tclWinReg.obj
link $(ldebug) $(dlllflags) -out:$@ $(TMPDIR)/tclWinReg.obj \
$(conlibsdll) $(TCLLIB) -entry:_DllMainCRTStartup@12
endif
ifeq ($(OBJEXT),o)
$(CAT32): $(WINDIR)/cat.c
$(CC) -c $(CON_CFLAGS) $?
$(CC) -o $@ -Wl,-stack,16384 $(TMPDIR)/cat.$(OBJEXT) $(conlibs)
else
$(CAT32): $(WINDIR)/cat.c
$(CC) $(CON_CFLAGS) -Fo$(TMPDIR)/ $(WINDIR)/cat.c
link -subsystem:console -entry:mainCRTStartup -out:$@ -stack:16384 $(TMPDIR)/cat.obj $(conlibs)
endif
$(TMPDIR)/tclcyg.def: $(DUMPEXTS) $(TCLOBJS)
echo 'EXPORTS' > tmp.def
-for o in $(TCLOBJS); do \
$(NM) --extern-only --defined-only $$o | sed -e 's/[^ ]* [^ ]* //' -e 's/^_//' | fgrep -v DllEntryPoint | fgrep -v DllMain | fgrep -v impure_ptr >> tmp.def; \
done
mv tmp.def $(TMPDIR)/tclcyg.def
$(TMPDIR)/plugin.def: $(DUMPEXTS) $(TCLOBJS)
echo 'EXPORTS' > tmp.def
-for o in $(TCLOBJS); do \
$(NM) --extern-only --defined-only $$o | sed -e 's/[^ ]* [^ ]* //' -e 's/^_//' | fgrep -v DllEntryPoint | fgrep -v DllMain | fgrep -v impure_ptr >> tmp.def; \
done
mv tmp.def $(TMPDIR)/plugin.def
$(TMPDIR)/testMain.$(OBJEXT): $(WINDIR)/tclAppInit.c
$(CC) -c -o $(TMPDIR)/testMain.$(OBJEXT) $(TCL_CFLAGS) -DTCL_TEST $?
.SUFFIXES: .S .c .o .obj .s
ifeq ($(OBJEXT),o)
.c.$(OBJEXT):
$(CC) -c $(TCL_CFLAGS) $<
else
.c.$(OBJEXT):
$(CC) -c $(TCL_CFLAGS) -Dtry=__try -Dexcept=__except $<
endif
ifeq ($(OBJEXT),o)
tclres.$(OBJEXT): $(srcdir)/tcl.rc
$(WINDRES) --include $(GENERICDIR) --include $(WINDIR) --define __WIN32__ --define VS_VERSION_INFO=1 $(srcdir)/tcl.rc tclres.$(OBJEXT)
tclshres.$(OBJEXT): $(srcdir)/tclsh.rc
$(WINDRES) --include $(GENERICDIR) --include $(WINDIR) --define __WIN32__ --define VS_VERSION_INFO=1 $(srcdir)/tclsh.rc tclshres.$(OBJEXT)
else
tclres.$(OBJEXT): $(srcdir)/tcl.rc
rc -i$(GENERICDIR) -i$(WINDIR) -d__WIN32__ -dVS_VERSION_INFO=1 -fotclres.$(OBJEXT) $(srcdir)/tcl.rc
tclshres.$(OBJEXT): $(srcdir)/tclsh.rc
rc -i$(GENERICDIR) -i$(WINDIR) -d__WIN32__ -dVS_VERSION_INFO=1 -fotclshres.$(OBJEXT) $(srcdir)/tclsh.rc
endif
#{$(WINDIR)}.rc{$(TMPDIR)}.res:
clean:
rm -f *.exp *.a *.dll *.exe $(TMPDIR)/*.$(OBJEXT) *.res *.def
rm -f tcl.base tclreg.base tclplugin.base
Makefile: $(WINDIR)/Makefile.in config.status
$(SHELL) config.status
config.status: $(WINDIR)/configure
./config.status --recheck