1# 2# This file is a Makefile for Tcl. If it has the name "Makefile.in" 3# then it is a template for a Makefile; to generate the actual Makefile, 4# run "./configure", which is a configuration script generated by the 5# "autoconf" program (constructs like "@foo@" will get replaced in the 6# actual Makefile. 7# 8# RCS: @(#) $Id: Makefile.in,v 1.68.2.7 2007/01/30 23:21:12 hobbs Exp $ 9 10VERSION = @TCL_VERSION@ 11 12#---------------------------------------------------------------- 13# Things you can change to personalize the Makefile for your own 14# site (you can make these changes in either Makefile.in or 15# Makefile, but changes to Makefile will get lost if you re-run 16# the configuration script). 17#---------------------------------------------------------------- 18 19# Default top-level directories in which to install architecture- 20# specific files (exec_prefix) and machine-independent files such 21# as scripts (prefix). The values specified here may be overridden 22# at configure-time with the --exec-prefix and --prefix options 23# to the "configure" script. 24 25prefix = @prefix@ 26exec_prefix = @exec_prefix@ 27bindir = @bindir@ 28libdir = @libdir@ 29includedir = @includedir@ 30mandir = @mandir@ 31 32# The following definition can be set to non-null for special systems 33# like AFS with replication. It allows the pathnames used for installation 34# to be different than those used for actually reference files at 35# run-time. INSTALL_ROOT is prepended to $prefix and $exec_prefix 36# when installing files. 37INSTALL_ROOT = 38 39# Directory from which applications will reference the library of Tcl 40# scripts (note: you can set the TCL_LIBRARY environment variable at 41# run-time to override this value): 42TCL_LIBRARY = $(prefix)/lib/tcl$(VERSION) 43 44# Path to use at runtime to refer to LIB_INSTALL_DIR: 45LIB_RUNTIME_DIR = $(libdir) 46 47# Directory in which to install the program tclsh: 48BIN_INSTALL_DIR = $(INSTALL_ROOT)$(bindir) 49 50# Directory in which to install the .a or .so binary for the Tcl library: 51LIB_INSTALL_DIR = $(INSTALL_ROOT)$(libdir) 52 53# Path name to use when installing library scripts. 54SCRIPT_INSTALL_DIR = $(INSTALL_ROOT)$(TCL_LIBRARY) 55 56# Directory in which to install the include file tcl.h: 57INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(includedir) 58 59# Directory in which to (optionally) install the private tcl headers: 60PRIVATE_INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(includedir) 61 62# Top-level directory in which to install manual entries: 63MAN_INSTALL_DIR = $(INSTALL_ROOT)$(mandir) 64 65# Directory in which to install manual entry for tclsh: 66MAN1_INSTALL_DIR = $(MAN_INSTALL_DIR)/man1 67 68# Directory in which to install manual entries for Tcl's C library 69# procedures: 70MAN3_INSTALL_DIR = $(MAN_INSTALL_DIR)/man3 71 72# Directory in which to install manual entries for the built-in 73# Tcl commands: 74MANN_INSTALL_DIR = $(MAN_INSTALL_DIR)/mann 75 76# Libraries built with optimization switches have this additional extension 77TCL_DBGX = @TCL_DBGX@ 78 79# warning flags 80CFLAGS_WARNING = @CFLAGS_WARNING@ 81 82# The default switches for optimization or debugging 83CFLAGS_DEBUG = @CFLAGS_DEBUG@ 84CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@ 85 86# To change the compiler switches, for example to change from optimization to 87# debugging symbols, change the following line: 88#CFLAGS = $(CFLAGS_DEBUG) 89#CFLAGS = $(CFLAGS_OPTIMIZE) 90#CFLAGS = $(CFLAGS_DEBUG) $(CFLAGS_OPTIMIZE) 91CFLAGS = @CFLAGS@ @CFLAGS_DEFAULT@ 92 93# To enable compilation debugging reverse the comment characters on 94# one of the following lines. 95COMPILE_DEBUG_FLAGS = 96#COMPILE_DEBUG_FLAGS = -DTCL_COMPILE_DEBUG 97#COMPILE_DEBUG_FLAGS = -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS 98 99# Special compiler flags to use when building man2tcl on Windows. 100MAN2TCLFLAGS = @MAN2TCLFLAGS@ 101 102SRC_DIR = @srcdir@ 103ROOT_DIR = @srcdir@/.. 104GENERIC_DIR = @srcdir@/../generic 105WIN_DIR = @srcdir@ 106COMPAT_DIR = @srcdir@/../compat 107 108# Converts a POSIX path to a Windows native path. 109CYGPATH = @CYGPATH@ 110 111GENERIC_DIR_NATIVE = $(shell $(CYGPATH) '$(GENERIC_DIR)' | sed 's!\\!/!g') 112WIN_DIR_NATIVE = $(shell $(CYGPATH) '$(WIN_DIR)' | sed 's!\\!/!g') 113ROOT_DIR_NATIVE = $(shell $(CYGPATH) '$(ROOT_DIR)' | sed 's!\\!/!g') 114 115LIBRARY_DIR = $(ROOT_DIR_NATIVE)/library 116 117DLLSUFFIX = @DLLSUFFIX@ 118LIBSUFFIX = @LIBSUFFIX@ 119EXESUFFIX = @EXESUFFIX@ 120 121TCL_STUB_LIB_FILE = @TCL_STUB_LIB_FILE@ 122TCL_DLL_FILE = @TCL_DLL_FILE@ 123TCL_LIB_FILE = @TCL_LIB_FILE@ 124DDE_DLL_FILE = tcldde$(DDEVER)${DLLSUFFIX} 125DDE_LIB_FILE = tcldde$(DDEVER)${LIBSUFFIX} 126REG_DLL_FILE = tclreg$(REGVER)${DLLSUFFIX} 127REG_LIB_FILE = tclreg$(REGVER)${LIBSUFFIX} 128PIPE_DLL_FILE = tclpip$(VER)${DLLSUFFIX} 129 130SHARED_LIBRARIES = $(TCL_DLL_FILE) $(TCL_STUB_LIB_FILE) \ 131 $(DDE_DLL_FILE) $(REG_DLL_FILE) $(PIPE_DLL_FILE) 132STATIC_LIBRARIES = $(TCL_LIB_FILE) $(REG_LIB_FILE) $(DDE_LIB_FILE) 133 134# TCL_EXE is the name of a tclsh executable that is available *BEFORE* 135# running make for the first time. Certain build targets (make genstubs) 136# need it to be available on the PATH. This executable should *NOT* be 137# required just to do a normal build although it can be required to run 138# make dist. 139TCL_EXE = tclsh 140 141TCLSH = tclsh$(VER)${EXESUFFIX} 142TCLTEST = tcltest${EXEEXT} 143CAT32 = cat32$(EXEEXT) 144MAN2TCL = man2tcl$(EXEEXT) 145 146@SET_MAKE@ 147 148# Setting the VPATH variable to a list of paths will cause the 149# makefile to look into these paths when resolving .c to .obj 150# dependencies. 151 152VPATH = $(GENERIC_DIR):$(WIN_DIR):$(COMPAT_DIR) 153 154AR = @AR@ 155RANLIB = @RANLIB@ 156CC = @CC@ 157RC = @RC@ 158RES = @RES@ 159AC_FLAGS = @EXTRA_CFLAGS@ @DEFS@ 160CPPFLAGS = @CPPFLAGS@ 161LDFLAGS_DEBUG = @LDFLAGS_DEBUG@ 162LDFLAGS_OPTIMIZE = @LDFLAGS_OPTIMIZE@ 163LDFLAGS = @LDFLAGS@ @LDFLAGS_DEFAULT@ 164LDFLAGS_CONSOLE = @LDFLAGS_CONSOLE@ 165LDFLAGS_WINDOW = @LDFLAGS_WINDOW@ 166EXEEXT = @EXEEXT@ 167OBJEXT = @OBJEXT@ 168STLIB_LD = @STLIB_LD@ 169SHLIB_LD = @SHLIB_LD@ 170SHLIB_LD_LIBS = @SHLIB_LD_LIBS@ $(LIBS) 171SHLIB_CFLAGS = @SHLIB_CFLAGS@ 172SHLIB_SUFFIX = @SHLIB_SUFFIX@ 173VER = @TCL_MAJOR_VERSION@@TCL_MINOR_VERSION@ 174DOTVER = @TCL_MAJOR_VERSION@.@TCL_MINOR_VERSION@ 175DDEVER = @TCL_DDE_MAJOR_VERSION@@TCL_DDE_MINOR_VERSION@ 176DDEDOTVER = @TCL_DDE_MAJOR_VERSION@.@TCL_DDE_MINOR_VERSION@ 177REGVER = @TCL_REG_MAJOR_VERSION@@TCL_REG_MINOR_VERSION@ 178REGDOTVER = @TCL_REG_MAJOR_VERSION@.@TCL_REG_MINOR_VERSION@ 179LIBS = @LIBS@ 180 181RMDIR = rm -rf 182MKDIR = mkdir -p 183SHELL = @SHELL@ 184RM = rm -f 185COPY = cp 186 187CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${TCL_SHLIB_CFLAGS} \ 188-I"${GENERIC_DIR_NATIVE}" -I"${WIN_DIR_NATIVE}" ${AC_FLAGS} \ 189${COMPILE_DEBUG_FLAGS} 190 191CC_OBJNAME = @CC_OBJNAME@ 192CC_EXENAME = @CC_EXENAME@ 193 194STUB_CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \ 195-I"${GENERIC_DIR_NATIVE}" -I"${WIN_DIR_NATIVE}" ${AC_FLAGS} \ 196${COMPILE_DEBUG_FLAGS} 197 198TCLTEST_OBJS = \ 199 tclTest.$(OBJEXT) \ 200 tclTestObj.$(OBJEXT) \ 201 tclTestProcBodyObj.$(OBJEXT) \ 202 tclThreadTest.$(OBJEXT) \ 203 tclWinTest.$(OBJEXT) \ 204 testMain.$(OBJEXT) 205 206GENERIC_OBJS = \ 207 regcomp.$(OBJEXT) \ 208 regexec.$(OBJEXT) \ 209 regfree.$(OBJEXT) \ 210 regerror.$(OBJEXT) \ 211 tclAlloc.$(OBJEXT) \ 212 tclAsync.$(OBJEXT) \ 213 tclBasic.$(OBJEXT) \ 214 tclBinary.$(OBJEXT) \ 215 tclCkalloc.$(OBJEXT) \ 216 tclClock.$(OBJEXT) \ 217 tclCmdAH.$(OBJEXT) \ 218 tclCmdIL.$(OBJEXT) \ 219 tclCmdMZ.$(OBJEXT) \ 220 tclCompCmds.$(OBJEXT) \ 221 tclCompExpr.$(OBJEXT) \ 222 tclCompile.$(OBJEXT) \ 223 tclDate.$(OBJEXT) \ 224 tclEncoding.$(OBJEXT) \ 225 tclEnv.$(OBJEXT) \ 226 tclEvent.$(OBJEXT) \ 227 tclExecute.$(OBJEXT) \ 228 tclFCmd.$(OBJEXT) \ 229 tclFileName.$(OBJEXT) \ 230 tclGet.$(OBJEXT) \ 231 tclHash.$(OBJEXT) \ 232 tclHistory.$(OBJEXT) \ 233 tclIndexObj.$(OBJEXT) \ 234 tclInterp.$(OBJEXT) \ 235 tclIO.$(OBJEXT) \ 236 tclIOCmd.$(OBJEXT) \ 237 tclIOGT.$(OBJEXT) \ 238 tclIOSock.$(OBJEXT) \ 239 tclIOUtil.$(OBJEXT) \ 240 tclLink.$(OBJEXT) \ 241 tclLiteral.$(OBJEXT) \ 242 tclListObj.$(OBJEXT) \ 243 tclLoad.$(OBJEXT) \ 244 tclMain.$(OBJEXT) \ 245 tclNamesp.$(OBJEXT) \ 246 tclNotify.$(OBJEXT) \ 247 tclObj.$(OBJEXT) \ 248 tclPanic.$(OBJEXT) \ 249 tclParse.$(OBJEXT) \ 250 tclParseExpr.$(OBJEXT) \ 251 tclPipe.$(OBJEXT) \ 252 tclPkg.$(OBJEXT) \ 253 tclPosixStr.$(OBJEXT) \ 254 tclPreserve.$(OBJEXT) \ 255 tclProc.$(OBJEXT) \ 256 tclRegexp.$(OBJEXT) \ 257 tclResolve.$(OBJEXT) \ 258 tclResult.$(OBJEXT) \ 259 tclScan.$(OBJEXT) \ 260 tclStringObj.$(OBJEXT) \ 261 tclStubInit.$(OBJEXT) \ 262 tclStubLib.$(OBJEXT) \ 263 tclThread.$(OBJEXT) \ 264 tclThreadAlloc.$(OBJEXT) \ 265 tclThreadJoin.$(OBJEXT) \ 266 tclTimer.$(OBJEXT) \ 267 tclUtf.$(OBJEXT) \ 268 tclUtil.$(OBJEXT) \ 269 tclVar.$(OBJEXT) 270 271WIN_OBJS = \ 272 tclWin32Dll.$(OBJEXT) \ 273 tclWinChan.$(OBJEXT) \ 274 tclWinConsole.$(OBJEXT) \ 275 tclWinSerial.$(OBJEXT) \ 276 tclWinError.$(OBJEXT) \ 277 tclWinFCmd.$(OBJEXT) \ 278 tclWinFile.$(OBJEXT) \ 279 tclWinInit.$(OBJEXT) \ 280 tclWinLoad.$(OBJEXT) \ 281 tclWinMtherr.$(OBJEXT) \ 282 tclWinNotify.$(OBJEXT) \ 283 tclWinPipe.$(OBJEXT) \ 284 tclWinSock.$(OBJEXT) \ 285 tclWinThrd.$(OBJEXT) \ 286 tclWinTime.$(OBJEXT) 287 288COMPAT_OBJS = \ 289 strftime.$(OBJEXT) strtoll.$(OBJEXT) strtoull.$(OBJEXT) 290 291PIPE_OBJS = stub16.$(OBJEXT) 292 293DDE_OBJS = tclWinDde.$(OBJEXT) 294 295REG_OBJS = tclWinReg.$(OBJEXT) 296 297STUB_OBJS = tclStubLib.$(OBJEXT) 298 299TCLSH_OBJS = tclAppInit.$(OBJEXT) 300 301TCL_OBJS = ${GENERIC_OBJS} ${WIN_OBJS} ${COMPAT_OBJS} 302 303TCL_DOCS = "$(ROOT_DIR_NATIVE)"/doc/*.[13n] 304 305all: binaries libraries doc 306 307tcltest: $(TCLTEST) 308 309binaries: @LIBRARIES@ $(TCLSH) 310 311libraries: 312 313doc: 314 315winhelp: $(ROOT_DIR)/tools/man2help.tcl $(MAN2TCL) 316 TCL_LIBRARY="$(LIBRARY_DIR)"; export TCL_LIBRARY; \ 317 ./$(TCLSH) "$(ROOT_DIR_NATIVE)"/tools/man2help.tcl tcl "$(VER)" $(TCL_DOCS) 318 hcw /c /e tcl.hpj 319 320$(MAN2TCL): $(ROOT_DIR)/tools/man2tcl.c 321 $(CC) $(CFLAGS_OPTIMIZE) $(MAN2TCLFLAGS) -o $(MAN2TCL) "$(ROOT_DIR_NATIVE)"/tools/man2tcl.c 322 323$(TCLSH): $(TCL_LIB_FILE) $(TCL_STUB_LIB_FILE) $(TCLSH_OBJS) tclsh.$(RES) 324 $(CC) $(CFLAGS) $(TCLSH_OBJS) $(TCL_LIB_FILE) $(LIBS) \ 325 tclsh.$(RES) $(CC_EXENAME) $(LDFLAGS_CONSOLE) 326 327$(TCLTEST): $(TCL_LIB_FILE) $(TCLTEST_OBJS) $(CAT32) tclsh.$(RES) 328 $(CC) $(CFLAGS) $(TCLTEST_OBJS) $(TCL_LIB_FILE) $(LIBS) \ 329 tclsh.$(RES) $(CC_EXENAME) $(LDFLAGS_CONSOLE) 330 331cat32.$(OBJEXT): cat.c 332 $(CC) -c $(CC_SWITCHES) @DEPARG@ $(CC_OBJNAME) 333 334$(CAT32): cat32.$(OBJEXT) 335 $(CC) $(CFLAGS) cat32.$(OBJEXT) $(CC_EXENAME) $(LIBS) $(LDFLAGS_CONSOLE) 336 337# The following targets are configured by autoconf to generate either 338# a shared library or static library 339 340${TCL_STUB_LIB_FILE}: ${STUB_OBJS} 341 @$(RM) ${TCL_STUB_LIB_FILE} 342 @MAKE_LIB@ ${STUB_OBJS} 343 @POST_MAKE_LIB@ 344 345${TCL_DLL_FILE}: ${TCL_OBJS} tcl.$(RES) 346 @$(RM) ${TCL_DLL_FILE} 347 @MAKE_DLL@ ${TCL_OBJS} tcl.$(RES) $(SHLIB_LD_LIBS) 348 349${TCL_LIB_FILE}: ${TCL_OBJS} 350 @$(RM) ${TCL_LIB_FILE} 351 @MAKE_LIB@ ${TCL_OBJS} 352 @POST_MAKE_LIB@ 353 354${DDE_DLL_FILE}: ${DDE_OBJS} ${TCL_STUB_LIB_FILE} 355 @$(RM) ${DDE_DLL_FILE} 356 @MAKE_DLL@ ${DDE_OBJS} $(TCL_STUB_LIB_FILE) $(SHLIB_LD_LIBS) 357 358${DDE_LIB_FILE}: ${DDE_OBJS} ${TCL_LIB_FILE} 359 @$(RM) ${DDE_LIB_FILE} 360 @MAKE_LIB@ ${DDE_OBJS} ${TCL_LIB_FILE} 361 362${REG_DLL_FILE}: ${REG_OBJS} ${TCL_STUB_LIB_FILE} 363 @$(RM) ${REG_DLL_FILE} 364 @MAKE_DLL@ ${REG_OBJS} $(TCL_STUB_LIB_FILE) $(SHLIB_LD_LIBS) 365 366${REG_LIB_FILE}: ${REG_OBJS} ${TCL_LIB_FILE} 367 @$(RM) ${REG_LIB_FILE} 368 @MAKE_LIB@ ${REG_OBJS} ${TCL_LIB_FILE} 369 370# PIPE_DLL_FILE is actually an executable, don't build it 371# like a DLL. 372 373${PIPE_DLL_FILE}: ${PIPE_OBJS} 374 @$(RM) ${PIPE_DLL_FILE} 375 @MAKE_EXE@ $(CFLAGS) ${PIPE_OBJS} $(LIBS) $(LDFLAGS_CONSOLE) 376 377# Add the object extension to the implicit rules. By default .obj is not 378# automatically added. 379 380.SUFFIXES: .${OBJEXT} 381.SUFFIXES: .$(RES) 382.SUFFIXES: .rc 383 384# Special case object targets 385 386tclWinInit.${OBJEXT}: tclWinInit.c 387 $(CC) -c $(CC_SWITCHES) -DBUILD_tcl $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME) 388 389tclWinPipe.${OBJEXT}: tclWinPipe.c 390 $(CC) -c $(CC_SWITCHES) -DBUILD_tcl -DTCL_PIPE_DLL=\"$(PIPE_DLL_FILE)\" \ 391 $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME) 392 393testMain.${OBJEXT}: tclAppInit.c 394 $(CC) -c $(CC_SWITCHES) -DTCL_TEST @DEPARG@ $(CC_OBJNAME) 395 396tclTest.${OBJEXT}: tclTest.c 397 $(CC) -c $(CC_SWITCHES) @DEPARG@ $(CC_OBJNAME) 398 399tclTestObj.${OBJEXT}: tclTestObj.c 400 $(CC) -c $(CC_SWITCHES) @DEPARG@ $(CC_OBJNAME) 401 402tclWinTest.${OBJEXT}: tclWinTest.c 403 $(CC) -c $(CC_SWITCHES) @DEPARG@ $(CC_OBJNAME) 404 405tclAppInit.${OBJEXT} : tclAppInit.c 406 $(CC) -c $(CC_SWITCHES) @DEPARG@ $(CC_OBJNAME) 407 408# The following objects should be built using the stub interfaces 409 410tclWinReg.${OBJEXT} : tclWinReg.c 411 $(CC) -c $(CC_SWITCHES) -DUSE_TCL_STUBS @DEPARG@ $(CC_OBJNAME) 412 413tclWinDde.${OBJEXT} : tclWinDde.c 414 $(CC) -c $(CC_SWITCHES) -DUSE_TCL_STUBS @DEPARG@ $(CC_OBJNAME) 415 416# The following objects are part of the stub library and should not 417# be built as DLL objects but none of the symbols should be exported 418 419tclStubLib.${OBJEXT}: tclStubLib.c 420 $(CC) -c $(CC_SWITCHES) -DSTATIC_BUILD @DEPARG@ $(CC_OBJNAME) 421 422 423# Implicit rule for all object files that will end up in the Tcl library 424 425.c.${OBJEXT}: 426 $(CC) -c $(CC_SWITCHES) -DBUILD_tcl @DEPARG@ $(CC_OBJNAME) 427 428.rc.$(RES): 429 $(RC) @RC_OUT@ $@ @RC_TYPE@ @RC_DEFINES@ @RC_INCLUDE@ "$(GENERIC_DIR_NATIVE)" @RC_INCLUDE@ "$(WIN_DIR_NATIVE)" @DEPARG@ 430 431install: all install-binaries install-libraries install-doc 432 433install-binaries: binaries 434 @for i in "$(LIB_INSTALL_DIR)" "$(BIN_INSTALL_DIR)" ; \ 435 do \ 436 if [ ! -d $$i ] ; then \ 437 echo "Making directory $$i"; \ 438 $(MKDIR) $$i; \ 439 chmod 755 $$i; \ 440 else true; \ 441 fi; \ 442 done; 443 @for i in dde1.2 reg1.1; \ 444 do \ 445 if [ ! -d $(LIB_INSTALL_DIR)/$$i ] ; then \ 446 echo "Making directory $(LIB_INSTALL_DIR)/$$i"; \ 447 $(MKDIR) $(LIB_INSTALL_DIR)/$$i; \ 448 else true; \ 449 fi; \ 450 done; 451 @for i in $(TCL_DLL_FILE) $(TCLSH) $(PIPE_DLL_FILE); \ 452 do \ 453 if [ -f $$i ]; then \ 454 echo "Installing $$i to $(BIN_INSTALL_DIR)/"; \ 455 $(COPY) $$i "$(BIN_INSTALL_DIR)"; \ 456 fi; \ 457 done 458 @for i in tclConfig.sh $(TCL_LIB_FILE) $(TCL_STUB_LIB_FILE); \ 459 do \ 460 if [ -f $$i ]; then \ 461 echo "Installing $$i to $(LIB_INSTALL_DIR)/"; \ 462 $(COPY) $$i "$(LIB_INSTALL_DIR)"; \ 463 fi; \ 464 done 465 @if [ -f $(DDE_DLL_FILE) ]; then \ 466 echo installing $(DDE_DLL_FILE); \ 467 $(COPY) $(DDE_DLL_FILE) $(LIB_INSTALL_DIR)/dde1.2; \ 468 $(COPY) $(ROOT_DIR)/library/dde/pkgIndex.tcl \ 469 $(LIB_INSTALL_DIR)/dde1.2; \ 470 fi 471 @if [ -f $(DDE_LIB_FILE) ]; then \ 472 echo installing $(DDE_LIB_FILE); \ 473 $(COPY) $(DDE_LIB_FILE) $(LIB_INSTALL_DIR)/dde1.2; \ 474 fi 475 @if [ -f $(REG_DLL_FILE) ]; then \ 476 echo installing $(REG_DLL_FILE); \ 477 $(COPY) $(REG_DLL_FILE) $(LIB_INSTALL_DIR)/reg1.1; \ 478 $(COPY) $(ROOT_DIR)/library/reg/pkgIndex.tcl \ 479 $(LIB_INSTALL_DIR)/reg1.1; \ 480 fi 481 @if [ -f $(REG_LIB_FILE) ]; then \ 482 echo installing $(REG_LIB_FILE); \ 483 $(COPY) $(REG_LIB_FILE) $(LIB_INSTALL_DIR)/reg1.1; \ 484 fi 485 486install-libraries: libraries 487 @for i in $(prefix)/lib $(INCLUDE_INSTALL_DIR) \ 488 $(SCRIPT_INSTALL_DIR); \ 489 do \ 490 if [ ! -d $$i ] ; then \ 491 echo "Making directory $$i"; \ 492 $(MKDIR) $$i; \ 493 else true; \ 494 fi; \ 495 done; 496 @for i in platform http1.0 http2.5 opt0.4 encoding msgcat1.3 tcltest2.2; \ 497 do \ 498 if [ ! -d $(SCRIPT_INSTALL_DIR)/$$i ] ; then \ 499 echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \ 500 $(MKDIR) $(SCRIPT_INSTALL_DIR)/$$i; \ 501 else true; \ 502 fi; \ 503 done; 504 @echo "Installing header files"; 505 @for i in "$(GENERIC_DIR)/tcl.h" "$(GENERIC_DIR)/tclDecls.h" \ 506 "$(GENERIC_DIR)/tclPlatDecls.h" ; \ 507 do \ 508 $(COPY) "$$i" "$(INCLUDE_INSTALL_DIR)"; \ 509 done; 510 @echo "Installing library files to $(SCRIPT_INSTALL_DIR)"; 511 @for i in $(ROOT_DIR)/library/*.tcl $(ROOT_DIR)/library/tclIndex; \ 512 do \ 513 $(COPY) "$$i" "$(SCRIPT_INSTALL_DIR)"; \ 514 done; 515 @echo "Installing library platform directory"; 516 @for j in $(ROOT_DIR)/library/platform/*.tcl; \ 517 do \ 518 $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/platform"; \ 519 done; 520 @echo "Installing library http1.0 directory"; 521 @for j in $(ROOT_DIR)/library/http1.0/*.tcl; \ 522 do \ 523 $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \ 524 done; 525 @echo "Installing library http2.5 directory"; 526 @for j in $(ROOT_DIR)/library/http/*.tcl; \ 527 do \ 528 $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http2.5"; \ 529 done; 530 @echo "Installing library opt0.4 directory"; 531 @for j in $(ROOT_DIR)/library/opt/*.tcl; \ 532 do \ 533 $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/opt0.4"; \ 534 done; 535 @echo "Installing library msgcat1.3 directory"; 536 @for j in $(ROOT_DIR)/library/msgcat/*.tcl; \ 537 do \ 538 $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/msgcat1.3"; \ 539 done; 540 @echo "Installing library tcltest2.2 directory"; 541 @for j in $(ROOT_DIR)/library/tcltest/*.tcl; \ 542 do \ 543 $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/tcltest2.2"; \ 544 done; 545 @echo "Installing encodings"; 546 @for i in $(ROOT_DIR)/library/encoding/*.enc ; do \ 547 $(COPY) "$$i" "$(SCRIPT_INSTALL_DIR)/encoding"; \ 548 done; 549 550install-doc: doc 551 552# Optional target to install private headers 553install-private-headers: libraries 554 @for i in $(PRIVATE_INCLUDE_INSTALL_DIR); \ 555 do \ 556 if [ ! -d $$i ] ; then \ 557 echo "Making directory $$i"; \ 558 $(MKDIR) $$i; \ 559 chmod 755 $$i; \ 560 else true; \ 561 fi; \ 562 done; 563 @echo "Installing private header files to $(PRIVATE_INCLUDE_INSTALL_DIR)/"; 564 @for i in "$(GENERIC_DIR)/tclInt.h" "$(GENERIC_DIR)/tclIntDecls.h" \ 565 "$(GENERIC_DIR)/tclIntPlatDecls.h" "$(GENERIC_DIR)/tclPort.h" \ 566 "$(WIN_DIR)/tclWinPort.h" ; \ 567 do \ 568 $(COPY) "$$i" "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \ 569 done; 570 571# Specifying TESTFLAGS on the command line is the standard way to pass 572# args to tcltest, ie: 573# % make test TESTFLAGS="-verbose bps -file fileName.test" 574 575test: binaries $(TCLTEST) 576 TCL_LIBRARY="$(LIBRARY_DIR)"; export TCL_LIBRARY; \ 577 ./$(TCLTEST) "$(ROOT_DIR_NATIVE)/tests/all.tcl" $(TESTFLAGS) \ 578 | ./$(CAT32) 579 580# Useful target to launch a built tcltest with the proper path,... 581runtest: binaries $(TCLTEST) 582 @TCL_LIBRARY="$(LIBRARY_DIR)"; export TCL_LIBRARY; \ 583 ./$(TCLTEST) $(TESTFLAGS) $(SCRIPT) 584 585# This target can be used to run tclsh from the build directory 586# via `make shell SCRIPT=foo.tcl` 587shell: binaries 588 @TCL_LIBRARY="$(LIBRARY_DIR)"; export TCL_LIBRARY; \ 589 ./$(TCLSH) $(SCRIPT) 590 591# This target can be used to run tclsh inside either gdb or insight 592gdb: binaries 593 @echo "set env TCL_LIBRARY=$(LIBRARY_DIR)" > gdb.run 594 gdb ./tclsh --command=gdb.run 595 rm gdb.run 596 597depend: 598 599Makefile: $(SRC_DIR)/Makefile.in 600 ./config.status 601 602cleanhelp: 603 $(RM) *.hlp *.cnt *.GID *.rtf man2tcl.exe 604 605clean: cleanhelp 606 $(RM) *.lib *.a *.exp *.dll *.$(RES) *.${OBJEXT} *~ \#* TAGS a.out 607 $(RM) $(TCLSH) $(TCLTEST) $(CAT32) 608 $(RM) *.pch *.ilk *.pdb 609 610distclean: clean 611 $(RM) Makefile config.status config.cache config.log tclConfig.sh \ 612 tcl.hpj 613 614# 615# Regenerate the stubs files. 616# 617 618$(GENERIC_DIR)/tclStubInit.c: $(GENERIC_DIR)/tcl.decls \ 619 $(GENERIC_DIR)/tclInt.decls 620 @echo "Warning: tclStubInit.c may be out of date." 621 @echo "Developers may want to run \"make genstubs\" to regenerate." 622 @echo "This warning can be safely ignored, do not report as a bug!" 623 624genstubs: 625 $(TCL_EXE) "$(ROOT_DIR_NATIVE)\tools\genStubs.tcl" \ 626 "$(GENERIC_DIR_NATIVE)" \ 627 "$(GENERIC_DIR_NATIVE)\tcl.decls" \ 628 "$(GENERIC_DIR_NATIVE)\tclInt.decls" 629