summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordas <das>2003-07-18 02:02:02 (GMT)
committerdas <das>2003-07-18 02:02:02 (GMT)
commitd2330a6687c2f6aa79494b00fcda6ba56f3e08a8 (patch)
treeb3ca9b300226091b105fc28b840bbfc2bcc00b0e
parenta626e7cb3acdd464d7121fc8a401eda7cbae9e92 (diff)
downloadtcl-d2330a6687c2f6aa79494b00fcda6ba56f3e08a8.zip
tcl-d2330a6687c2f6aa79494b00fcda6ba56f3e08a8.tar.gz
tcl-d2330a6687c2f6aa79494b00fcda6ba56f3e08a8.tar.bz2
* unix/tclUnixFCmd.c: fix for compilation errors on platforms where
configure detects non-functional chflags(). [Bug 748946] * macosx/Makefile: Rewrote buildsystem for Mac OS X framework build to be purely make driven; in order to become independent of Apple's closed-source IDE and build tool. The changes are intended to be transparent to the Makefile user, all existing make targets and cmd line variable overrides should continue to work. Changed build to only include tcl specific html help in Tcl.framework, the tk specific html help is now included in Tk.framework. Added var to allow overriding of tclsh used during html help building (Landon Fuller). * macosx/Tcl.pbproj/project.pbxproj: * macosx/Tcl.pbproj/jingham.pbxuser: Changed to purely call through to the make driven buildsystem; Tcl.framework is no longer assembled by ProjectBuilder. Set default SYMROOT in target options to simplify setting up PB (manually setting common build folder for tcl & tk no longer needed). * tools/tcltk-man2html.tcl: Added options to allow building only the tcl or tk html help files; the default behaviour with none of the new options is to build both, as before. * unix/Makefile.in: Added targets for building only the tcl or tk help. * macosx/README (new): Tcl specific excerpts of tk/macosx/README. * generic/tcl.h: Updated reminder comment about editing macosx/Tcl.pbproj/project.pbxproj when version number changes.
-rw-r--r--ChangeLog33
-rw-r--r--generic/tcl.h5
-rw-r--r--macosx/Makefile281
-rw-r--r--macosx/README120
-rw-r--r--macosx/Tcl.pbproj/jingham.pbxuser440
-rw-r--r--macosx/Tcl.pbproj/project.pbxproj345
-rwxr-xr-xtools/tcltk-man2html.tcl63
-rw-r--r--unix/Makefile.in9
-rw-r--r--unix/tclUnixFCmd.c14
9 files changed, 499 insertions, 811 deletions
diff --git a/ChangeLog b/ChangeLog
index 32e175a..e508820 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,36 @@
+2003-07-17 Daniel Steffen <das@users.sourceforge.net>
+
+ * unix/tclUnixFCmd.c: fix for compilation errors on platforms where
+ configure detects non-functional chflags(). [Bug 748946]
+
+ * macosx/Makefile: Rewrote buildsystem for Mac OS X framework build
+ to be purely make driven; in order to become independent of Apple's
+ closed-source IDE and build tool. The changes are intended to be
+ transparent to the Makefile user, all existing make targets and
+ cmd line variable overrides should continue to work.
+ Changed build to only include tcl specific html help in Tcl.framework,
+ the tk specific html help is now included in Tk.framework.
+ Added var to allow overriding of tclsh used during html help
+ building (Landon Fuller).
+
+ * macosx/Tcl.pbproj/project.pbxproj:
+ * macosx/Tcl.pbproj/jingham.pbxuser: Changed to purely call through
+ to the make driven buildsystem; Tcl.framework is no longer assembled
+ by ProjectBuilder.
+ Set default SYMROOT in target options to simplify setting up PB
+ (manually setting common build folder for tcl & tk no longer needed).
+
+ * tools/tcltk-man2html.tcl: Added options to allow building only the
+ tcl or tk html help files; the default behaviour with none of the new
+ options is to build both, as before.
+
+ * unix/Makefile.in: Added targets for building only the tcl or tk help.
+
+ * macosx/README (new): Tcl specific excerpts of tk/macosx/README.
+
+ * generic/tcl.h: Updated reminder comment about editing
+ macosx/Tcl.pbproj/project.pbxproj when version number changes.
+
2003-07-16 Mumit Khan <khan@nanotech.wisc.edu>
* generic/tclPathObj.c (SetFsPathFromAny): Add Cygwin specific
diff --git a/generic/tcl.h b/generic/tcl.h
index 8a62eae..48a6c15 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -13,7 +13,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tcl.h,v 1.159 2003/07/16 22:03:52 hobbs Exp $
+ * RCS: @(#) $Id: tcl.h,v 1.160 2003/07/18 02:02:02 das Exp $
*/
#ifndef _TCL
@@ -47,8 +47,7 @@ extern "C" {
* win/makefile.bc (not patchlevel) 2 LOC
* README (sections 0 and 2)
* mac/README (2 LOC, not patchlevel)
- * macosx/Tcl.pbproj/project.pbxproj
- * (7 LOC total, 2 LOC patch)
+ * macosx/Tcl.pbproj/project.pbxproj (not patchlevel) 2 LOC
* win/README.binary (sections 0-4)
* win/README (not patchlevel) (sections 0 and 2)
* unix/tcl.spec (2 LOC Major/Minor, 1 LOC patch)
diff --git a/macosx/Makefile b/macosx/Makefile
index fec1e4b..e2dcf8e 100644
--- a/macosx/Makefile
+++ b/macosx/Makefile
@@ -1,87 +1,222 @@
-################################################################################
+########################################################################################################
#
-# Simple makefile for building on Mac OS X with the
-# Project Builder command line tool 'pbxbuild'
+# Makefile to build Tcl on Mac OS X packaged as a Framework
+# uses standard unix build system in tcl/unix
#
-# RCS: @(#) $Id: Makefile,v 1.5 2003/02/19 16:43:29 das Exp $
+# RCS: @(#) $Id: Makefile,v 1.6 2003/07/18 02:02:02 das Exp $
#
-################################################################################
+########################################################################################################
-INSTALL_ROOT ?=
+#-------------------------------------------------------------------------------------------------------
+# customizable settings
-BUILD_DIR ?= ${CURDIR}/../../build
+DESTDIR ?=
+INSTALL_ROOT ?= ${DESTDIR}
-TARGET = Tcl
+BUILD_DIR ?= ${CURDIR}/../../build
+SYMROOT ?= ${BUILD_DIR}/${PROJECT}
+OBJROOT ?= ${SYMROOT}
-DEVBUILDSTYLE = Development
-DEPBUILDSTYLE = Deployment
+EXTRA_CONFIGURE_ARGS ?=
+EXTRA_MAKE_ARGS ?=
-PBXBUILD = /usr/bin/pbxbuild
+INSTALL_PATH ?= /Library/Frameworks
+PREFIX ?= /usr
+BINDIR ?= ${PREFIX}/bin
-BUILD = ${PBXBUILD} SYMROOT="${BUILD_DIR}" -target "${TARGET}"
+TCL_PACKAGE_PATH ?= "~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl \
+ ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks \
+ /System/Library/Frameworks"
-DEVBUILD = ${BUILD} -buildstyle "${DEVBUILDSTYLE}"
-DEPBUILD = ${BUILD} -buildstyle "${DEPBUILDSTYLE}"
+#-------------------------------------------------------------------------------------------------------
+# meta targets
-INSTALLOPTS = INSTALL_ROOT="${INSTALL_ROOT}"
+meta := all install embedded install-embedded clean distclean
-EMBEDDEDOPTS = EMBEDDED_BUILD=1
+styles := develop deploy
-################################################################################
+all := ${styles}
+all : ${all}
-all: develop deploy
-
-install: install-develop install-deploy
-
-embedded: embedded-deploy
-
-install-embedded: install-embedded-deploy
-
-clean: clean-develop clean-deploy
-
-################################################################################
-
-develop:
- ${DEVBUILD}
-
-deploy:
- ${DEPBUILD}
-
-install-develop:
- ${DEVBUILD} install ${INSTALLOPTS}
-
-install-deploy:
- ${DEPBUILD} install ${INSTALLOPTS}
-
-embedded-develop:
- ${DEVBUILD} ${EMBEDDEDOPTS}
-
-embedded-deploy:
- ${DEPBUILD} ${EMBEDDEDOPTS}
-
-install-embedded-develop:
- ${DEVBUILD} install ${INSTALLOPTS} ${EMBEDDEDOPTS}
-
-install-embedded-deploy:
- ${DEPBUILD} install ${INSTALLOPTS} ${EMBEDDEDOPTS}
-
-clean-develop:
- ${DEVBUILD} clean
-
-clean-deploy:
- ${DEPBUILD} clean
-
-################################################################################
-
-forceRelink:
- @-cd ${BUILD_DIR}; \
- rm -rf Tcl.framework tclsh8.4 \
- Development.build/Tcl.build/Tcl Deployment.build/Tcl.build/Tcl
-
-################################################################################
-
-.PHONY: all install embedded clean develop deploy install-develop install-deploy \
-embedded-develop embedded-deploy install-embedded-develop install-embedded-deploy \
-clean-develop clean-deploy forceRelink \
-
-################################################################################
+install := ${styles:%=install-%}
+install : ${install}
+install-%: action := install-
+
+embedded := ${styles:%=embedded-%}
+embedded : embedded-deploy
+install-embedded := $(embedded:%=install-%)
+install-embedded : install-embedded-deploy
+
+clean := ${styles:%=clean-%}
+clean : ${clean}
+clean-%: action := clean-
+distclean := ${styles:%=distclean-%}
+distclean : ${distclean}
+distclean-%: action := distclean-
+
+targets := $(foreach v,${meta},${$v})
+
+#-------------------------------------------------------------------------------------------------------
+# build styles
+
+develop_make_args := BUILD_STYLE=Development CONFIGURE_ARGS=--enable-symbols
+deploy_make_args := BUILD_STYLE=Deployment \
+ MAKE_ARGS=INSTALL_PROGRAM="'$$\$${INSTALL} $$\$${INSTALL_STRIP_PROGRAM}'" \
+ MAKE_ARGS+=INSTALL_LIBRARY="'$$\$${INSTALL} $$\$${INSTALL_STRIP_LIBRARY}'"
+embedded_make_args := EMBEDDED_BUILD=1
+install_make_args := INSTALL_BUILD=1
+
+$(targets):
+ ${MAKE} ${action}${PROJECT} \
+ $(foreach s,${styles} embedded install,$(if $(findstring $s,$@),${${s}_make_args}))
+
+#-------------------------------------------------------------------------------------------------------
+# project specific settings
+
+PROJECT := tcl
+PRODUCT_NAME := Tcl
+
+UNIX_DIR := ${CURDIR}/../unix
+GENERIC_DIR := ${CURDIR}/../generic
+
+PRODUCT_VERSION := $(shell eval $$(grep '^TCL_VERSION=' ${UNIX_DIR}/configure.in); \
+ echo "$${TCL_VERSION}")
+PRODUCT_LONGVERSION := $(shell eval $$(grep '^TCL_PATCH_LEVEL=' ${UNIX_DIR}/configure.in); \
+ echo "${PRODUCT_VERSION}$${TCL_PATCH_LEVEL}")
+
+PRIVATE_HEADERS := tclInt.h tclIntDecls.h tclIntPlatDecls.h tclMath.h
+TARGETS := tclsh tcltest
+TCLSH := tclsh${PRODUCT_VERSION}
+TCL_EXE ?= ${SYMROOT}/${TCLSH}
+
+DYLIB_INSTALL_PATH ?= ${INSTALL_PATH}
+
+TCL_LIBRARY := @TCL_IN_FRAMEWORK@
+LIBDIR := ${INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${PRODUCT_VERSION}
+DYLIB_INSTALL_DIR := ${DYLIB_INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${PRODUCT_VERSION}
+INCLUDEDIR := ${LIBDIR}/Headers
+PRIVATEINCLUDEDIR := ${LIBDIR}/PrivateHeaders
+SCRIPTDIR := ${LIBDIR}/Resources/Scripts
+DOCDIR := ${LIBDIR}/Resources/English.lproj/Documentation/Reference
+INFOPLIST := ${LIBDIR}/Resources/Info.plist
+
+BUILD_STYLE =
+OBJ_DIR = ${OBJROOT}/${BUILD_STYLE}
+
+${PROJECT}: override INSTALL_ROOT = ${OBJ_DIR}/
+
+MAKE_VARS := INSTALL_ROOT TCL_PACKAGE_PATH TCL_LIBRARY DYLIB_INSTALL_DIR
+MAKE_ARGS_V = $(foreach v,${MAKE_VARS},$v=${$v})
+export CPPROG := cp -p
+
+#-------------------------------------------------------------------------------------------------------
+# build rules
+
+${PROJECT}: install-${PROJECT}
+
+${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure
+ mkdir -p ${OBJ_DIR} && cd ${OBJ_DIR} && ${UNIX_DIR}/configure \
+ --prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} --includedir=${INCLUDEDIR} \
+ --enable-threads --enable-framework ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS}
+ cd ${OBJ_DIR} && mkdir -p ${PRODUCT_NAME}.framework && \
+ ln -fs ../${PRODUCT_NAME} ${PRODUCT_NAME}.framework/${PRODUCT_NAME}
+
+build-${PROJECT}: ${OBJ_DIR}/Makefile
+ ${MAKE} -C ${OBJ_DIR} ${TARGETS} ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS}
+# symolic link hackery to trick
+# 'make install INSTALL_ROOT=${OBJ_DIR}'
+# into building Tcl.framework and tclsh in ${SYMROOT}
+ cd ${OBJ_DIR}; mkdir -p $(dir ./${INSTALL_PATH}) $(dir ./${BINDIR}); \
+ rm -f ./${INSTALL_PATH}; ln -fs ${SYMROOT} ./${INSTALL_PATH}; \
+ rm -f ./${BINDIR}; ln -fs ${SYMROOT} ./${BINDIR}; \
+ ln -fs ${OBJ_DIR}/tcltest ${SYMROOT}
+
+clean-${PROJECT}:
+ ${MAKE} -C ${OBJ_DIR} clean
+
+distclean-${PROJECT}:
+ ${MAKE} -C ${OBJ_DIR} distclean
+ rm -rf ${OBJ_DIR} ${PRODUCT_NAME}.framework tclsh${PRODUCT_VERSION} tcltest
+
+install-${PROJECT}: build-${PROJECT}
+# install to ${INSTALL_ROOT} with optional stripping
+ ${MAKE} -C ${OBJ_DIR} install-binaries install-libraries \
+ SCRIPT_INSTALL_DIR=${INSTALL_ROOT}${SCRIPTDIR} ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS}
+ mkdir -p ${INSTALL_ROOT}${PRIVATEINCLUDEDIR} && \
+ cd ${GENERIC_DIR} && ${CPPROG} ${PRIVATE_HEADERS} ${INSTALL_ROOT}${PRIVATEINCLUDEDIR}
+ifeq (${BUILD_STYLE},Development)
+# keep copy of debug library around, so that
+# Deployment build can be installed on top
+# of Development build without overwriting
+# the debug library
+ cd ${INSTALL_ROOT}${LIBDIR} && ln -f "${PRODUCT_NAME}" "${PRODUCT_NAME}_debug"
+endif
+# fixup Framework structure
+ cd ${INSTALL_ROOT}${LIBDIR}/.. && \
+ rm -f Current && ln -fs ${PRODUCT_VERSION} Current && \
+ cd .. && ln -fs Versions/Current/* . && \
+ ln -fs Versions/${PRODUCT_VERSION}/lib*stub* .
+ifeq (${INSTALL_BUILD},1)
+ifeq (${EMBEDDED_BUILD},1)
+# if we are embedding frameworks, don't install tclsh
+ rm -f "${INSTALL_ROOT}/${BINDIR}/${TCLSH}"
+ -rmdir -p "${INSTALL_ROOT}/${BINDIR}" 2>&-
+else
+# redo prebinding
+ cd ${INSTALL_ROOT}; \
+ if [ ! -d usr/lib ]; then mkdir -p usr; ln -fs /usr/lib usr/; RM_USRLIB=1; fi; \
+ if [ ! -d System ]; then ln -fs /System .; RM_SYSTEM=1; fi; \
+ redo_prebinding -r . "./${BINDIR}/${TCLSH}"; \
+ if [ -n "$${RM_USRLIB:-}" ]; then rm -f usr/lib; rmdir -p usr 2>&-; fi; \
+ if [ -n "$${RM_SYSTEM:-}" ]; then rm -f System; fi
+# install tclsh symbolic link
+ mkdir -p ${INSTALL_ROOT}/usr/bin && \
+ ln -fs ${TCLSH} ${INSTALL_ROOT}/${BINDIR}/tclsh
+ifeq (${BUILD_STYLE},Deployment)
+# build html documentation
+ export DYLD_FRAMEWORK_PATH=${SYMROOT} && \
+ ${MAKE} -C ${OBJ_DIR} html-tcl \
+ DISTDIR=${INSTALL_ROOT}${DOCDIR} TCL_EXE=${TCL_EXE} && \
+ cd ${INSTALL_ROOT}${DOCDIR} && ln -fs contents.htm html/${PRODUCT_NAME}TOC.html && \
+ rm -fr "${PRODUCT_NAME}" && mv -f html "${PRODUCT_NAME}"
+endif
+endif
+endif
+# write Info.plist file
+ @printf > ${INSTALL_ROOT}${INFOPLIST} '\
+ <?xml version="1.0" encoding="UTF-8"?>\n\
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"\
+ "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n\
+ <plist version="1.0">\n\
+ <dict>\n\
+ <key>CFBundleDevelopmentRegion</key>\n\
+ <string>English</string>\n\
+ <key>CFBundleExecutable</key>\n\
+ <string>Tcl</string>\n\
+ <key>CFBundleGetInfoString</key>\n\
+ <string>Tcl Library ${PRODUCT_VERSION}, Copyright © 2003 Tcl Core Team.\n\
+ MacOS X Port by Jim Ingham &lt;jingham@apple.com&gt; &amp; Ian Reid, Copyright\
+ © 2001-2002, Apple Computer, Inc.</string>\n\
+ <key>CFBundleIdentifier</key>\n\
+ <string>com.tcltk.tcllibrary</string>\n\
+ <key>CFBundleInfoDictionaryVersion</key>\n\
+ <string>6.0</string>\n\
+ <key>CFBundleName</key>\n\
+ <string>Tcl Library ${PRODUCT_VERSION}</string>\n\
+ <key>CFBundlePackageType</key>\n\
+ <string>FMWK</string>\n\
+ <key>CFBundleShortVersionString</key>\n\
+ <string>${PRODUCT_LONGVERSION}</string>\n\
+ <key>CFBundleSignature</key>\n\
+ <string>Tcl </string>\n\
+ <key>CFBundleVersion</key>\n\
+ <string>${PRODUCT_LONGVERSION}</string>\n\
+ </dict>\n\
+ </plist>\n'
+
+#-------------------------------------------------------------------------------------------------------
+
+.PHONY: ${meta} ${targets} ${PROJECT} build-${PROJECT} install-${PROJECT} \
+ clean-${PROJECT} distclean-${PROJECT}
+
+#-------------------------------------------------------------------------------------------------------
diff --git a/macosx/README b/macosx/README
new file mode 100644
index 0000000..a96dc4d
--- /dev/null
+++ b/macosx/README
@@ -0,0 +1,120 @@
+Tcl MacOSX README
+-----------------
+
+RCS: @(#) $Id: README,v 1.2 2003/07/18 02:02:02 das Exp $
+
+This is the README file for the Mac OS X native version of Tcl (framework build).
+
+
+1. General
+----------
+
+- The tcl-mac mailing list on sourceforge is the canonical place for questions
+specific to Tcl & Tk on Mac OS X:
+ http://lists.sourceforge.net/lists/listinfo/tcl-mac
+(this page also has a link to searchable archives of the list, please check them
+before asking on the list, many questions have already been answered).
+
+- For general tcl/tk questions, the newsgroup comp.lang.tcl is your best bet,
+but also check the Tcl'ers Wiki for a wealth of information:
+ http://wiki.tcl.tk/
+
+- The wiki has a page listing known bugs in Mac OS X Tcl/Tk (and other tips)
+ http://wiki.tcl.tk/MacOS%20X
+as well as a page with info on building Tcl/Tk on Mac OS X
+ http://wiki.tcl.tk/Steps%20to%20build%20Tcl/Tk%208.4.0%20on%20MacOS%20X
+
+- You should report bugs to the sourceforge bug trackers as usual:
+ Tcl: https://sourceforge.net/tracker/?func=add&group_id=10894&atid=110894
+ Tk: https://sourceforge.net/tracker/?func=add&group_id=12997&atid=112997
+please make sure that your report Tk specific bugs to the tktoolkit bug
+tracker and not the tcl one.
+
+
+2. Using Tcl on MacOSX
+----------------------
+
+- Mac OS X 10.1 (or higher) is required to run Tcl on MacOSX.
+
+- Tcl built on Mac OS X 10.2 or higher will not run on 10.1 due to missing
+symbols in libSystem, however Tcl built on 10.1 will run on 10.2 (but without
+prebinding and other optimizations).
+
+- Tcl extensions will be found in any of:
+ $HOME/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl
+ $HOME/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks
+ /System/Library/Frameworks (searched in that order).
+Given a potential package directory $pkg, Tcl on OSX checks for the file
+$pkg/Resources/Scripts/pkgIndex.tcl as well as the usual $pkg/pkgIndex.tcl.
+This allows building extensions as frameworks with all script files contained
+in the Resources/Scripts directory of the framework.
+
+- The Tcl framework contains documentation in html format in the
+standard location for frameworks:
+ Tcl.framework/Resources/English.lproj/Documentation/Reference/Tcl
+No manpages are installed by default.
+
+- the framework Tcl.framework can be placed in any of the system's standard
+framework directories:
+ $HOME/Library/Frameworks /Library/Frameworks
+ /Network/Library/Frameworks /System/Library/Frameworks
+and /usr/bin/tclsh will work.
+
+- the format of binary extensions expected by [load] is that of ordinary shared
+libraries (.dylib) and not MachO bundles, at present loading of MachO bundles is
+not supported.
+
+
+3. Building Tcl.framework
+-------------------------
+
+- Mac OS X 10.1.5 (or higher) is required to build TclMacOSX.
+
+- Apple's Developer Tools CD needs to be installed (the version matching your OS
+release, but no earlier than April 2002). This CD should have come with Mac OS X
+retail or should be present as a disk image on new macs that came with OSX
+preinstalled. It can also be downloaded from http://connect.apple.com (after you
+register for free ADC membership).
+
+- Tcl is built as a Mac OS X framework via the Makefile in tcl/macosx, but can
+also be built from Apple's ProjectBuilder IDE using the Tcl.pbproj project (which
+calls through to the Makefile).
+
+- Unpack the tcl archive
+
+- The following instructions assume the tcl source tree is named "tcl${ver}",
+where ${ver} is a shell variable containing the tcl version number (for
+example '8.4.2').
+Setup the shell variable as follows:
+ set ver="8.4.2" ;: if your shell is csh
+ ver="8.4.2" ;: if your shell is sh
+The source tree will be named this way only if you are building from a release
+archive, if you are building from CVS, the version numbers will be missing; so
+set ${ver} to the empty string instead:
+ set ver="" ;: if your shell is csh
+ ver="" ;: if your shell is sh
+
+- If you're only interested in _building_ Tcl.framework and don't plan on doing
+development with the ProjectBuilder projects, using the Makefile is easiest.
+The following steps will build Tcl from the Terminal, assuming you are
+located in the directory containing the tcl source tree:
+ make -C tcl${ver}/macosx
+and the following will then install Tcl onto the root volume (admin password
+required):
+ sudo make -C tcl${ver}/macosx install
+if you don't have the admin password, you can install into your home directory,
+instead by passing an INSTALL_ROOT argument to make:
+ make -C tcl${ver}/macosx install INSTALL_ROOT="${HOME}/"
+
+- The default Makefile targets will build _both_ debug and optimized versions of
+the Tcl framework with the standard convention of naming the debug
+library Tcl.framework/Tcl_debug.
+This allows you to dynamically link to the debug libraries at runtime by setting
+ setenv DYLD_IMAGE_SUFFIX _debug
+(c.f. man dyld for more details)
+
+If you only want to build and install the debug or optimized build, use the
+'develop' or 'deploy' target variants of the Makefiles, respectively.
+For example, to build and install only the optimized versions:
+ make -C tcl${ver}/macosx deploy
+ sudo make -C tcl${ver}/macosx install-deploy
diff --git a/macosx/Tcl.pbproj/jingham.pbxuser b/macosx/Tcl.pbproj/jingham.pbxuser
index d914578..10f0b57 100644
--- a/macosx/Tcl.pbproj/jingham.pbxuser
+++ b/macosx/Tcl.pbproj/jingham.pbxuser
@@ -1,405 +1,79 @@
// !$*UTF8*$!
{
- 005751AA02FB00930AC916F0 = {
- fRef = 005751AB02FB00930AC916F0;
- isa = PBXTextBookmark;
- name = "DefaultsDoc.rtf: 30";
- rLen = 32;
- rLoc = 2777;
- rType = 0;
- vrLen = 1334;
- vrLoc = 2136;
- };
- 005751AB02FB00930AC916F0 = {
- isa = PBXFileReference;
- name = DefaultsDoc.rtf;
- path = "/Developer/Applications/Project Builder.app/Contents/Resources/DefaultsDoc.rtf";
- refType = 0;
- };
00E2F845016E82EB0ACA28DC = {
activeBuildStyle = 00E2F847016E82EB0ACA28DC;
- activeTarget = F50DC359017027D801DC9062;
- addToTargets = (
- 00E2F84C016E8B780ACA28DC,
- );
+ activeExecutable = F9A61CCE04C2B5A8006F5A0B;
+ activeTarget = 00E2F84C016E8B780ACA28DC;
breakpoints = (
);
+ executables = (
+ F9A61CCE04C2B5A8006F5A0B,
+ F973FC3204852E75006F146B,
+ );
perUserDictionary = {
- PBXPerProjectTemplateStateSaveDate = 49920633;
- "PBXTemplateGeometry-F5314676015831810DCA290F" = {
- ContentSize = "{789, 551}";
- LeftSlideOut = {
- Collapsed = NO;
- Frame = "{{0, 23}, {789, 528}}";
- Split0 = {
- ActiveTab = 2;
- Collapsed = NO;
- Frame = "{{0, 0}, {789, 528}}";
- Split0 = {
- Frame = "{{0, 204}, {789, 324}}";
- };
- SplitCount = 1;
- Tab0 = {
- Debugger = {
- Collapsed = NO;
- Frame = "{{0, 0}, {952, 321}}";
- Split0 = {
- Frame = "{{0, 24}, {952, 297}}";
- Split0 = {
- Frame = "{{0, 0}, {468, 297}}";
- };
- Split1 = {
- DebugVariablesTableConfiguration = (
- Name,
- 123,
- Value,
- 85,
- Summary,
- 241.123,
- );
- Frame = "{{477, 0}, {475, 297}}";
- };
- SplitCount = 2;
- };
- SplitCount = 1;
- Tab0 = {
- Frame = "{{0, 0}, {100, 50}}";
- };
- Tab1 = {
- Frame = "{{0, 0}, {100, 50}}";
- };
- TabCount = 2;
- TabsVisible = YES;
- };
- Frame = "{{0, 0}, {952, 321}}";
- LauncherConfigVersion = 7;
- };
- Tab1 = {
- Frame = "{{0, 0}, {781, 452}}";
- LauncherConfigVersion = 3;
- Runner = {
- Frame = "{{0, 0}, {781, 452}}";
- };
- };
- Tab2 = {
- BuildMessageFrame = "{{0, 0}, {791, 191}}";
- BuildTranscriptFrame = "{{0, 200}, {791, 0}}";
- Frame = "{{0, 0}, {789, 198}}";
- };
- Tab3 = {
- Frame = "{{0, 0}, {612, 295}}";
- };
- TabCount = 4;
- TabsVisible = NO;
- };
- SplitCount = 1;
- Tab0 = {
- Frame = "{{0, 0}, {300, 533}}";
- GroupTreeTableConfiguration = (
- TargetStatusColumn,
- 18,
- MainColumn,
- 267,
- );
- };
- Tab1 = {
- ClassesFrame = "{{0, 0}, {280, 398}}";
- ClassesTreeTableConfiguration = (
- PBXBookColumnIdentifier,
- 20,
- PBXClassColumnIdentifier,
- 237,
- );
- Frame = "{{0, 0}, {278, 659}}";
- MembersFrame = "{{0, 407}, {280, 252}}";
- MembersTreeTableConfiguration = (
- PBXBookColumnIdentifier,
- 20,
- PBXMethodColumnIdentifier,
- 236,
- );
- };
- Tab2 = {
- Frame = "{{0, 0}, {200, 100}}";
- };
- Tab3 = {
- Frame = "{{0, 0}, {200, 100}}";
- TargetTableConfiguration = (
- ActiveObject,
- 16,
- ObjectNames,
- 202.296,
- );
- };
- Tab4 = {
- BreakpointsTreeTableConfiguration = (
- breakpointColumn,
- 197,
- enabledColumn,
- 31,
- );
- Frame = "{{0, 0}, {250, 100}}";
- };
- TabCount = 5;
- TabsVisible = NO;
- };
- StatusViewVisible = YES;
- Template = F5314676015831810DCA290F;
- ToolbarVisible = YES;
- WindowLocation = "{7, 385}";
- };
- PBXWorkspaceContents = (
- {
- LeftSlideOut = {
- Split0 = {
- Split0 = {
- NavContent0 = {
- bookmark = 005751AA02FB00930AC916F0;
- history = (
- F5BFE56402F8B7A901DC9062,
- F5BFE56702F8B7A901DC9062,
- 00F4D9CE02F9BA490AC916F0,
- );
- prevStack = (
- F5BFE56A02F8B7A901DC9062,
- );
- };
- NavCount = 1;
- NavGeometry0 = {
- Frame = "{{0, 0}, {571, 548}}";
- NavBarVisible = YES;
- };
- };
- SplitCount = 1;
- Tab0 = {
- Debugger = {
- Split0 = {
- SplitCount = 2;
- };
- SplitCount = 1;
- TabCount = 2;
- };
- LauncherConfigVersion = 7;
- };
- Tab1 = {
- LauncherConfigVersion = 3;
- Runner = {
- };
- };
- TabCount = 4;
- };
- SplitCount = 1;
- Tab1 = {
- OptionsSetName = "Default Options";
- };
- TabCount = 5;
- };
- },
- );
- PBXWorkspaceGeometries = (
- {
- ContentSize = "{855, 571}";
- LeftSlideOut = {
- ActiveTab = 0;
- Collapsed = NO;
- Frame = "{{0, 23}, {855, 548}}";
- Split0 = {
- Collapsed = NO;
- Frame = "{{284, 0}, {571, 548}}";
- Split0 = {
- Frame = "{{0, 0}, {571, 548}}";
- };
- SplitCount = 1;
- Tab0 = {
- Debugger = {
- Collapsed = NO;
- Frame = "{{0, 0}, {681, 289}}";
- Split0 = {
- Frame = "{{0, 24}, {681, 265}}";
- Split0 = {
- Frame = "{{0, 0}, {333, 265}}";
- };
- Split1 = {
- DebugVariablesTableConfiguration = (
- Name,
- 82.80298,
- Value,
- 104.074,
- Summary,
- 126.123,
- );
- Frame = "{{342, 0}, {339, 265}}";
- };
- SplitCount = 2;
- };
- SplitCount = 1;
- Tab0 = {
- Frame = "{{0, 0}, {100, 50}}";
- };
- Tab1 = {
- Frame = "{{0, 0}, {100, 50}}";
- };
- TabCount = 2;
- TabsVisible = YES;
- };
- Frame = "{{0, 0}, {681, 289}}";
- LauncherConfigVersion = 7;
- };
- Tab1 = {
- Frame = "{{0, 0}, {681, 120}}";
- LauncherConfigVersion = 3;
- Runner = {
- Frame = "{{0, 0}, {681, 120}}";
- };
- };
- Tab2 = {
- BuildMessageFrame = "{{0, 0}, {683, 127}}";
- BuildTranscriptFrame = "{{0, 136}, {683, 100}}";
- Frame = "{{0, 0}, {681, 234}}";
- };
- Tab3 = {
- Frame = "{{0, 0}, {681, 238}}";
- };
- TabCount = 4;
- TabsVisible = NO;
- };
- SplitCount = 1;
- Tab0 = {
- Frame = "{{0, 0}, {260, 548}}";
- GroupTreeTableConfiguration = (
- SCMStatusColumn,
- 22,
- TargetStatusColumn,
- 18,
- MainColumn,
- 205,
- );
- };
- Tab1 = {
- ClassesFrame = "{{0, 0}, {250, 333}}";
- ClassesTreeTableConfiguration = (
- PBXBookColumnIdentifier,
- 20,
- PBXClassColumnIdentifier,
- 207,
- );
- Frame = "{{0, 0}, {248, 554}}";
- MembersFrame = "{{0, 342}, {250, 212}}";
- MembersTreeTableConfiguration = (
- PBXBookColumnIdentifier,
- 20,
- PBXMethodColumnIdentifier,
- 206,
- );
- };
- Tab2 = {
- Frame = "{{0, 0}, {217, 554}}";
- };
- Tab3 = {
- Frame = "{{0, 0}, {239, 548}}";
- TargetTableConfiguration = (
- ActiveObject,
- 16,
- ObjectNames,
- 206,
- );
- };
- Tab4 = {
- BreakpointsTreeTableConfiguration = (
- breakpointColumn,
- 197,
- enabledColumn,
- 31,
- );
- Frame = "{{0, 0}, {250, 554}}";
- };
- TabCount = 5;
- TabsVisible = YES;
- };
- StatusViewVisible = YES;
- Template = 64ABBB4501FA494900185B06;
- ToolbarVisible = YES;
- WindowLocation = "{77, 330}";
- },
- );
- PBXWorkspaceStateSaveDate = 49920633;
- };
- perUserProjectItems = {
- 005751AA02FB00930AC916F0 = 005751AA02FB00930AC916F0;
- 00F4D9CE02F9BA490AC916F0 = 00F4D9CE02F9BA490AC916F0;
- F5BFE56402F8B7A901DC9062 = F5BFE56402F8B7A901DC9062;
- F5BFE56702F8B7A901DC9062 = F5BFE56702F8B7A901DC9062;
- F5BFE56A02F8B7A901DC9062 = F5BFE56A02F8B7A901DC9062;
+ PBXPerProjectTemplateStateSaveDate = 79872121;
};
projectwideBuildSettings = {
- OBJROOT = "/Volumes/TheCloset/jingham/tcl-tk/source/tcl-merge/Objects";
- SYMROOT = "/Volumes/TheCloset/jingham/tcl-tk/source/tcl-merge/Products";
+ SYMROOT = "${SRCROOT}/../../build/tcl";
};
wantsIndex = 1;
- wantsSCM = 1;
- };
- 00E2F84B016E8A830ACA28DC = {
- activeExec = 0;
+ wantsSCM = -1;
};
00E2F84C016E8B780ACA28DC = {
activeExec = 0;
};
- 00E2F84E016E92110ACA28DC = {
- activeExec = 0;
- };
- 00F4D9CE02F9BA490AC916F0 = {
- fRef = 00F4D9CF02F9BA4A0AC916F0;
- isa = PBXTextBookmark;
- name = "DefaultsDoc.rtf: 30";
- rLen = 32;
- rLoc = 2777;
- rType = 0;
- vrLen = 1334;
- vrLoc = 2136;
+ F973FC3204852E75006F146B = {
+ activeArgIndex = 2147483647;
+ activeArgIndices = (
+ );
+ argumentStrings = (
+ );
+ configStateDict = {
+ };
+ debuggerPlugin = GDBDebugging;
+ dylibVariantSuffix = "";
+ enableDebugStr = 1;
+ environmentEntries = (
+ );
+ isa = PBXExecutable;
+ launchableReference = F9A61CCD04C2B5A5006F5A0B;
+ name = tclsh8.4;
+ shlibInfoDictList = (
+ );
+ sourceDirectories = (
+ );
};
- 00F4D9CF02F9BA4A0AC916F0 = {
+ F9A61CCD04C2B5A5006F5A0B = {
isa = PBXFileReference;
- name = DefaultsDoc.rtf;
- path = "/Developer/Applications/Project Builder.app/Contents/Resources/DefaultsDoc.rtf";
- refType = 0;
- };
- F50DC359017027D801DC9062 = {
- activeExec = 0;
- };
- F5BFE56402F8B7A901DC9062 = {
- fRef = F5BFE56E02F8B7AA01DC9062;
- isa = PBXTextBookmark;
- name = "stat.h: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1666;
- vrLoc = 3618;
- };
- F5BFE56702F8B7A901DC9062 = {
- fRef = F5F24F6E016ECAA401DC9062;
- isa = PBXTextBookmark;
- name = "tcl.h: 397";
- rLen = 6;
- rLoc = 11199;
- rType = 0;
- vrLen = 1293;
- vrLoc = 10644;
+ name = tclsh8.4;
+ path = ../../build/tcl/tclsh8.4;
+ refType = 4;
};
- F5BFE56A02F8B7A901DC9062 = {
- fRef = F5F24F6E016ECAA401DC9062;
- isa = PBXTextBookmark;
- name = "tcl.h: 397";
- rLen = 6;
- rLoc = 11199;
- rType = 0;
- vrLen = 1293;
- vrLoc = 10644;
+ F9A61CCE04C2B5A8006F5A0B = {
+ activeArgIndex = 2147483647;
+ activeArgIndices = (
+ );
+ argumentStrings = (
+ );
+ configStateDict = {
+ };
+ debuggerPlugin = GDBDebugging;
+ dylibVariantSuffix = "";
+ enableDebugStr = 1;
+ environmentEntries = (
+ );
+ isa = PBXExecutable;
+ launchableReference = F9A61CD104C2B5B4006F5A0B;
+ name = tcltest;
+ shlibInfoDictList = (
+ );
+ sourceDirectories = (
+ );
};
- F5BFE56E02F8B7AA01DC9062 = {
+ F9A61CD104C2B5B4006F5A0B = {
isa = PBXFileReference;
- name = stat.h;
- path = /usr/include/sys/stat.h;
- refType = 0;
+ name = tcltest;
+ path = ../../build/tcl/tcltest;
+ refType = 4;
};
}
diff --git a/macosx/Tcl.pbproj/project.pbxproj b/macosx/Tcl.pbproj/project.pbxproj
index 0e25e87..3635cbb 100644
--- a/macosx/Tcl.pbproj/project.pbxproj
+++ b/macosx/Tcl.pbproj/project.pbxproj
@@ -5,32 +5,6 @@
};
objectVersion = 38;
objects = {
- 00530A0D0173C8270ACA28DC = {
- buildActionMask = 12;
- files = (
- );
- generatedFileNames = (
- );
- isa = PBXShellScriptBuildPhase;
- neededFileNames = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "# install to ${INSTALL_ROOT} with optional stripping\ncd ${TEMP_DIR}/..\nif test \"${INSTALL_STRIP}\" = \"YES\"; then\nexport INSTALL_PROGRAM='${INSTALL} ${INSTALL_STRIP_PROGRAM}'\nexport INSTALL_LIBRARY='${INSTALL} ${INSTALL_STRIP_LIBRARY}'\nelse\nexport INSTALL_PROGRAM='${INSTALL}'\nexport INSTALL_LIBRARY='${INSTALL}'\nfi\nexport CPPROG='cp -p'\ngnumake install-binaries install-libraries TCL_LIBRARY=\"@TCL_IN_FRAMEWORK@\" INSTALL_ROOT=\"${INSTALL_ROOT}\" SCRIPT_INSTALL_DIR=\"${INSTALL_ROOT}${LIBDIR}/Resources/Scripts\" INSTALL_PROGRAM=\"${INSTALL_PROGRAM}\" INSTALL_LIBRARY=\"${INSTALL_LIBRARY}\"";
- };
- 00530A0E0173CC960ACA28DC = {
- buildActionMask = 12;
- files = (
- );
- generatedFileNames = (
- );
- isa = PBXShellScriptBuildPhase;
- neededFileNames = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "# fixup Framework structure\ncd \"${INSTALL_ROOT}${LIBDIR}\"\nln -fs Versions/Current/Headers ../..\nln -fs \"Versions/Current/tclConfig.sh\" ../..\nln -fs `ls libtclstub* | sed -e \"s|.*|Versions/${FRAMEWORK_VERSION}/&|\"` ../..\nif [ \"${BUILD_STYLE}\" = \"Development\" ]; then\n\t# keep copy of debug library around, so that\n\t# Deployment build can be installed on top\n\t# of Development build without overwriting\n\t# the debug library\n\tcp -fp \"${PRODUCT_NAME}\" \"${PRODUCT_NAME}_debug\"\n\tln -fs \"Versions/Current/${PRODUCT_NAME}_debug\" ../..\nfi";
- };
00E2F845016E82EB0ACA28DC = {
buildStyles = (
00E2F847016E82EB0ACA28DC,
@@ -42,8 +16,6 @@
productRefGroup = 00E2F84A016E8A830ACA28DC;
projectDirPath = "";
targets = (
- 00E2F84E016E92110ACA28DC,
- 00E2F84B016E8A830ACA28DC,
00E2F84C016E8B780ACA28DC,
);
};
@@ -65,9 +37,7 @@
buildRules = (
);
buildSettings = {
- EXTRA_CONFIGURE_FLAGS = "--enable-symbols";
- INSTALL_STRIP = NO;
- TEMP_DIR = "${OBJROOT}/Development.build/$(PROJECT_NAME).build/$(TARGET_NAME).build";
+ MAKE_TARGET = develop;
};
isa = PBXBuildStyle;
name = Development;
@@ -76,15 +46,14 @@
buildRules = (
);
buildSettings = {
- INSTALL_STRIP = YES;
- TEMP_DIR = "${OBJROOT}/Deployment.build/$(PROJECT_NAME).build/$(TARGET_NAME).build";
+ MAKE_TARGET = deploy;
};
isa = PBXBuildStyle;
name = Deployment;
};
00E2F84A016E8A830ACA28DC = {
children = (
- 00E2F84D016E92110ACA28DC,
+ F9A61C9D04C2B4E3006F5A0B,
F53ACC5C031D9D11016F146B,
F53ACC73031DA405016F146B,
);
@@ -92,134 +61,31 @@
name = Products;
refType = 4;
};
- 00E2F84B016E8A830ACA28DC = {
- buildArgumentsString = "-c \"if [ \\\"${ACTION}\\\" != \\\"clean\\\" ]; then if [ -z \\\"`find . ! \\\\( -path './*/*' -prune \\\\) -name Makefile -newer \\\"${SRCROOT}/../unix/configure\\\"`\\\" ]; then \\\"${SRCROOT}/../unix/configure\\\" --prefix=/usr --mandir=/usr/share/man --libdir=\\\"${LIBDIR}\\\" --includedir=\\\"${LIBDIR}/Headers\\\" --enable-threads --enable-framework ${EXTRA_CONFIGURE_FLAGS}; mkdir -p Tcl.framework; ln -fs ../Tcl Tcl.framework/Tcl; fi; fi\"";
- buildPhases = (
- );
- buildSettings = {
- EXTRA_CONFIGURE_FLAGS = "";
- FRAMEWORK_VERSION = 8.5;
- INSTALL_PATH = /Library/Frameworks;
- LIBDIR = "${INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${FRAMEWORK_VERSION}";
- PRODUCT_NAME = Tcl;
- };
- buildToolPath = /bin/sh;
- buildWorkingDirectory = "${TEMP_DIR}/..";
- dependencies = (
- );
- isa = PBXLegacyTarget;
- name = Configure;
- passBuildSettingsInEnvironment = 1;
- productName = Configure;
- settingsToExpand = 6;
- settingsToPassInEnvironment = 287;
- settingsToPassOnCommandLine = 280;
- };
00E2F84C016E8B780ACA28DC = {
- buildArgumentsString = "-c \"if [ \\\"${ACTION}\\\" != \\\"clean\\\" ]; then gnumake tclsh tcltest TCL_LIBRARY=\\\"@TCL_IN_FRAMEWORK@\\\" TCL_PACKAGE_PATH=\\\"~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks\\\" DYLIB_INSTALL_DIR=\\\"${DYLIB_INSTALL_DIR}\\\" ${EXTRA_MAKE_FLAGS}; else gnumake distclean; fi\"";
+ buildArgumentsString = "-c \"if [ \\\"${ACTION}\\\" != \\\"clean\\\" ]; then if [ \\\"${ACTION}\\\" = \\\"install\\\" ]; then MAKE_ACTION=\"install-\"; fi; else MAKE_ACTION=\"distclean-\"; fi; gnumake \\${MAKE_ACTION:-}${MAKE_TARGET}";
buildPhases = (
);
buildSettings = {
- DYLIB_INSTALL_DIR = "${DYLIB_INSTALL_PATH}/${PRODUCT_NAME}.framework/Versions/${FRAMEWORK_VERSION}";
- DYLIB_INSTALL_PATH = "${INSTALL_PATH}";
- EXTRA_MAKE_FLAGS = "";
- FRAMEWORK_VERSION = 8.5;
+ EXTRA_CONFIGURE_ARGS = "";
+ EXTRA_MAKE_ARGS = "";
INSTALL_PATH = /Library/Frameworks;
+ INSTALL_ROOT = "${DSTROOT}";
+ PREFIX = /usr;
PRODUCT_NAME = Tcl;
+ SYMROOT = "${SRCROOT}/../../build/tcl";
};
buildToolPath = /bin/sh;
- buildWorkingDirectory = "${TEMP_DIR}/..";
+ buildWorkingDirectory = "${SRCROOT}";
dependencies = (
- F5877EB5031F7997016F146B,
);
isa = PBXLegacyTarget;
- name = Make;
+ name = Tcl;
passBuildSettingsInEnvironment = 1;
- productName = Make;
+ productName = Tcl;
settingsToExpand = 6;
settingsToPassInEnvironment = 287;
settingsToPassOnCommandLine = 280;
};
- 00E2F84D016E92110ACA28DC = {
- isa = PBXFrameworkReference;
- path = Tcl.framework;
- refType = 3;
- };
- 00E2F84E016E92110ACA28DC = {
- buildPhases = (
- F5877FB6031F97AF016F146B,
- F50DC36A01703B7301DC9062,
- F50DC367017033D701DC9062,
- F50DC3680170344801DC9062,
- 00E2F84F016E92110ACA28DC,
- F5BE9BBF02FB5974016F146B,
- 00530A0D0173C8270ACA28DC,
- 00530A0E0173CC960ACA28DC,
- F5877FBB031FA90A016F146B,
- F59AE5E3017AC67A01DC9062,
- );
- buildSettings = {
- DSTROOT = "${TEMP_DIR}";
- EXTRA_MAKE_INSTALL_FLAGS = "";
- FRAMEWORK_VERSION = 8.5;
- INSTALL_PATH = /Library/Frameworks;
- LIBDIR = "${INSTALL_PATH}/${PRODUCT_NAME}.${WRAPPER_EXTENSION}/Versions/${FRAMEWORK_VERSION}";
- PRODUCT_NAME = Tcl;
- WRAPPER_EXTENSION = framework;
- };
- dependencies = (
- F5877EB6031F79A4016F146B,
- );
- isa = PBXFrameworkTarget;
- name = Tcl;
- productInstallPath = /Library/Frameworks;
- productName = TclLibrary;
- productReference = 00E2F84D016E92110ACA28DC;
- productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>Tcl</string>
- <key>CFBundleGetInfoString</key>
- <string>Tcl Library 8.5, Copyright © 2003 Tcl Core Team.
-MacOS X Port by Jim Ingham &lt;jingham@apple.com&gt; &amp; Ian Reid, Copyright © 2001-2002, Apple Computer, Inc.</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.tcltk.tcllibrary</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>Tcl Library 8.5</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string>8.5a0</string>
- <key>CFBundleSignature</key>
- <string>Tcl </string>
- <key>CFBundleVersion</key>
- <string>8.5a0</string>
-</dict>
-</plist>
-";
- };
- 00E2F84F016E92110ACA28DC = {
- buildActionMask = 2147483647;
- files = (
- F59D846A0338FAA4016F146B,
- F59D846B0338FAA4016F146B,
- F59D846E0338FAA4016F146B,
- F59D84620338F9CA016F146B,
- F59D846C0338FAA4016F146B,
- F59D846D0338FAA4016F146B,
- F5C093BB0342F7D6016F146B,
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
00E2F854016E922C0ACA28DC = {
children = (
F5F24F87016ECAFC01DC9062,
@@ -411,33 +277,6 @@ MacOS X Port by Jim Ingham &lt;jingham@apple.com&gt; &amp; Ian Reid, Copyright Â
//F52
//F53
//F54
- F50DC367017033D701DC9062 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- F50DC3680170344801DC9062 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXResourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- F50DC36A01703B7301DC9062 = {
- buildActionMask = 2147483647;
- files = (
- F59D84630338F9EC016F146B,
- F59D84640338F9ED016F146B,
- F59D84670338FA8B016F146B,
- F59D84680338FA8D016F146B,
- F59D84690338FA90016F146B,
- F5C093BA0342F7B4016F146B,
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
F5306C9F03CAC979016F146B = {
children = (
F5306CA303CAC9DE016F146B,
@@ -478,171 +317,21 @@ MacOS X Port by Jim Ingham &lt;jingham@apple.com&gt; &amp; Ian Reid, Copyright Â
F53ACC5C031D9D11016F146B = {
isa = PBXExecutableFileReference;
name = tclsh8.5;
- path = ../../build/tclsh8.5;
+ path = ../../build/tcl/tclsh8.5;
refType = 2;
};
F53ACC73031DA405016F146B = {
isa = PBXExecutableFileReference;
name = tcltest;
- path = ../../build/tcltest;
+ path = ../../build/tcl/tcltest;
refType = 2;
};
- F5877EB5031F7997016F146B = {
- isa = PBXTargetDependency;
- target = 00E2F84B016E8A830ACA28DC;
- };
- F5877EB6031F79A4016F146B = {
- isa = PBXTargetDependency;
- target = 00E2F84C016E8B780ACA28DC;
- };
- F5877FB6031F97AF016F146B = {
- buildActionMask = 8;
- files = (
- );
- generatedFileNames = (
- );
- isa = PBXShellScriptBuildPhase;
- neededFileNames = (
- );
- runOnlyForDeploymentPostprocessing = 1;
- shellPath = /bin/sh;
- shellScript = "# ensure we can overwrite a previous install\nif [ -d \"${INSTALL_ROOT}${INSTALL_PATH}/${PRODUCT_NAME}.${WRAPPER_EXTENSION}\" ]; then\n chmod -RH u+w \"${INSTALL_ROOT}${INSTALL_PATH}/${PRODUCT_NAME}.${WRAPPER_EXTENSION}\"\nfi";
- };
- F5877FBB031FA90A016F146B = {
- buildActionMask = 8;
- files = (
- );
- generatedFileNames = (
- );
- isa = PBXShellScriptBuildPhase;
- neededFileNames = (
- );
- runOnlyForDeploymentPostprocessing = 1;
- shellPath = /bin/sh;
- shellScript = "if [ -n \"${EMBEDDED_BUILD:-}\" ]; then\n# if we are embedding frameworks, don't install tclsh\nrm -f \"${INSTALL_ROOT}/usr/bin/tclsh${FRAMEWORK_VERSION}\"\nrmdir -p \"${INSTALL_ROOT}/usr/bin\" 2>&-\ntrue\nelse\n# redo prebinding\ncd \"${INSTALL_ROOT}\"\nif [ ! -d usr/lib ]; then mkdir -p usr; ln -fs /usr/lib usr/; RM_USRLIB=1; fi\nif [ ! -d System ]; then ln -fs /System .; RM_SYSTEM=1; fi\nredo_prebinding -r . \"./usr/bin/tclsh${FRAMEWORK_VERSION}\"\nif [ -n \"${RM_USRLIB:-}\" ]; then rm -f usr/lib; rmdir -p usr 2>&-; fi\nif [ -n \"${RM_SYSTEM:-}\" ]; then rm -f System; fi\n# install tclsh symbolic link\nmkdir -p \"${INSTALL_ROOT}/usr/bin\"\nln -fs \"tclsh${FRAMEWORK_VERSION}\" \"${INSTALL_ROOT}/usr/bin/tclsh\"\nfi";
- };
- F59AE5E3017AC67A01DC9062 = {
- buildActionMask = 8;
- files = (
- );
- generatedFileNames = (
- );
- isa = PBXShellScriptBuildPhase;
- neededFileNames = (
- );
- runOnlyForDeploymentPostprocessing = 1;
- shellPath = /bin/sh;
- shellScript = "if [ -z \"${EMBEDDED_BUILD:-}\" ]; then\n# build html documentation\nif [ \"${BUILD_STYLE}\" = \"Deployment\" ]; then\n cd \"${TEMP_DIR}/..\"\n export DYLD_FRAMEWORK_PATH=${SYMROOT}\n gnumake html DISTDIR=\"${INSTALL_ROOT}${LIBDIR}/Resources/English.lproj/Documentation/Reference\"\n cd \"${INSTALL_ROOT}${LIBDIR}/Resources/English.lproj/Documentation/Reference\"\n ln -fs contents.htm html/TclTOC.html\n rm -fr \"${PRODUCT_NAME}\"; mv -f html \"${PRODUCT_NAME}\"\nfi\nfi";
- };
- F59D84620338F9CA016F146B = {
- fileRef = F5F24F72016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- ATTRIBUTES = (
- Private,
- );
- };
- };
- F59D84630338F9EC016F146B = {
- fileRef = F5F24F73016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- };
- };
- F59D84640338F9ED016F146B = {
- fileRef = F5F24F74016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- };
- };
- F59D84670338FA8B016F146B = {
- fileRef = F5F24F6E016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- };
- };
- F59D84680338FA8D016F146B = {
- fileRef = F5F24F70016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- };
- };
- F59D84690338FA90016F146B = {
- fileRef = F5F24F77016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- };
- };
- F59D846A0338FAA4016F146B = {
- fileRef = F5F24F6E016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- };
- };
- F59D846B0338FAA4016F146B = {
- fileRef = F5F24F70016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- };
- };
- F59D846C0338FAA4016F146B = {
- fileRef = F5F24F73016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- ATTRIBUTES = (
- Private,
- );
- };
- };
- F59D846D0338FAA4016F146B = {
- fileRef = F5F24F74016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- ATTRIBUTES = (
- Private,
- );
- };
- };
- F59D846E0338FAA4016F146B = {
- fileRef = F5F24F77016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- };
- };
F5A1836F018242A501DC9062 = {
fileEncoding = 5;
isa = PBXFileReference;
path = tclMacOSXBundle.c;
refType = 2;
};
- F5BE9BBF02FB5974016F146B = {
- buildActionMask = 2147483647;
- files = (
- );
- generatedFileNames = (
- );
- isa = PBXShellScriptBuildPhase;
- neededFileNames = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "# symolic link hackery to trick\n# 'make install INSTALL_ROOT=${TEMP_DIR}'\n# into building Tcl.framework and tclsh in ${SYMROOT}\ncd \"${TEMP_DIR}\"\nmkdir -p Library\nmkdir -p usr\nrm -f Library/Frameworks; ln -fs \"${SYMROOT}\" Library/Frameworks\nrm -f usr/bin; ln -fs \"${SYMROOT}\" usr/bin\nln -fs \"${TEMP_DIR}/../tcltest\" \"${SYMROOT}\"";
- };
- F5C093BA0342F7B4016F146B = {
- fileRef = F5F24F76016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- };
- };
- F5C093BB0342F7D6016F146B = {
- fileRef = F5F24F76016ECAA401DC9062;
- isa = PBXBuildFile;
- settings = {
- ATTRIBUTES = (
- Private,
- );
- };
- };
F5C88655017D604601DC9062 = {
children = (
F5C88656017D604601DC9062,
@@ -1572,6 +1261,12 @@ MacOS X Port by Jim Ingham &lt;jingham@apple.com&gt; &amp; Ian Reid, Copyright Â
//F92
//F93
//F94
+ F9A61C9D04C2B4E3006F5A0B = {
+ isa = PBXFrameworkReference;
+ name = Tcl.framework;
+ path = ../../build/tcl/Tcl.framework;
+ refType = 2;
+ };
F9FED5C6047C7CEC006F146B = {
fileEncoding = 30;
isa = PBXFileReference;
diff --git a/tools/tcltk-man2html.tcl b/tools/tcltk-man2html.tcl
index 221dc63..89f3a83 100755
--- a/tools/tcltk-man2html.tcl
+++ b/tools/tcltk-man2html.tcl
@@ -65,20 +65,22 @@ package require Tcl 8.4
# Oct 24, 1997 - moved from 8.0b1 to 8.0 release
#
-set Version "0.31"
+set Version "0.32"
proc parse_command_line {} {
global argv Version
# These variables determine where the man pages come from and where
# the converted pages go to.
- global tcltkdir tkdir tcldir webdir
+ global tcltkdir tkdir tcldir webdir build_tcl build_tk
# Set defaults based on original code.
set tcltkdir ../..
set tkdir {}
set tcldir {}
set webdir ../html
+ set build_tcl 0
+ set build_tk 0
# Handle arguments a la GNU:
# --version
@@ -99,6 +101,8 @@ proc parse_command_line {} {
puts " --version print version number, then exit"
puts " --srcdir=DIR find tcl and tk source below DIR"
puts " --htmldir=DIR put generated HTML in DIR"
+ puts " --tcl build tcl help"
+ puts " --tk build tk help"
exit 0
}
@@ -112,6 +116,14 @@ proc parse_command_line {} {
set webdir [string range $option 10 end]
}
+ --tcl {
+ set build_tcl 1
+ }
+
+ --tk {
+ set build_tk 1
+ }
+
default {
puts stderr "tcltk-man-html: unrecognized option -- `$option'"
exit 1
@@ -119,6 +131,9 @@ proc parse_command_line {} {
}
}
+ if {!$build_tcl && !$build_tk} {set build_tcl 1; set build_tk 1}
+
+ if {$build_tcl} {
# Find Tcl.
set tcldir [lindex [lsort [glob -nocomplain -tails -type d \
-directory $tcltkdir {tcl{,[8-9].[0-9]{,.[0-9]}}}]] end]
@@ -127,7 +142,9 @@ proc parse_command_line {} {
exit 1
}
puts "using Tcl source directory $tcldir"
+ }
+ if {$build_tk} {
# Find Tk.
set tkdir [lindex [lsort [glob -nocomplain -tails -type d \
-directory $tcltkdir {tk{,[8-9].[0-9]{,.[0-9]}}}]] end]
@@ -136,10 +153,15 @@ proc parse_command_line {} {
exit 1
}
puts "using Tk source directory $tkdir"
+ }
# the title for the man pages overall
global overall_title
- set overall_title "[capitalize $tcldir]/[capitalize $tkdir] Manual"
+ set overall_title ""
+ if {$build_tcl} {append overall_title "[capitalize $tcldir]"}
+ if {$build_tcl && $build_tk} {append overall_title "/"}
+ if {$build_tk} {append overall_title "[capitalize $tkdir]"}
+ append overall_title " Manual"
}
proc capitalize {string} {
@@ -656,6 +678,7 @@ proc cross-reference {ref} {
foreach name {array file history info interp string trace
after clipboard grab image option pack place selection tk tkwait update winfo wm} {
if {[regexp "^$name \[a-z0-9]*\$" $lref] && \
+ [info exists manual(name-$name)] && \
[string compare $manual(tail) "$name.n"]} {
return "<A HREF=\"../$manual(name-$name).htm\">$ref</A>"
}
@@ -1265,7 +1288,7 @@ proc makedirhier {dir} {
## specified by html.
##
proc make-man-pages {html args} {
- global env manual overall_title
+ global env manual overall_title tcltkdesc
makedirhier $html
set manual(short-toc-n) 1
set manual(short-toc-fp) [open $html/contents.htm w]
@@ -1273,6 +1296,7 @@ proc make-man-pages {html args} {
puts $manual(short-toc-fp) "<BODY><HR><H3>$overall_title</H3><HR><DL>"
set manual(merge-copyrights) {}
foreach arg $args {
+ if {$arg == ""} {continue}
set manual(wing-glob) [lindex $arg 0]
set manual(wing-name) [lindex $arg 1]
set manual(wing-file) [lindex $arg 2]
@@ -1558,15 +1582,15 @@ proc make-man-pages {html args} {
set keys [lsort -command strcasecmp [array names manual keyword-*]]
makedirhier $html/Keywords
catch {eval file delete -- [glob $html/Keywords/*]}
- puts $manual(short-toc-fp) {<DT><A HREF="Keywords/contents.htm">Keywords</A><DD>The keywords from the Tcl/Tk man pages.}
+ puts $manual(short-toc-fp) "<DT><A HREF=\"Keywords/contents.htm\">Keywords</A><DD>The keywords from the $tcltkdesc man pages."
set keyfp [open $html/Keywords/contents.htm w]
- puts $keyfp "<HTML><HEAD><TITLE>Tcl/Tk Keywords</TITLE></HEAD>"
- puts $keyfp "<BODY><HR><H3>Tcl/Tk Keywords</H3><HR><H2>"
+ puts $keyfp "<HTML><HEAD><TITLE>$tcltkdesc Keywords</TITLE></HEAD>"
+ puts $keyfp "<BODY><HR><H3>$tcltkdesc Keywords</H3><HR><H2>"
foreach a {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} {
puts $keyfp "<A HREF=\"$a.htm\">$a</A>"
set afp [open $html/Keywords/$a.htm w]
- puts $afp "<HTML><HEAD><TITLE>Tcl/Tk Keywords - $a</TITLE></HEAD>"
- puts $afp "<BODY><HR><H3>Tcl/Tk Keywords - $a</H3><HR><H2>"
+ puts $afp "<HTML><HEAD><TITLE>$tcltkdesc Keywords - $a</TITLE></HEAD>"
+ puts $afp "<BODY><HR><H3>$tcltkdesc Keywords - $a</H3><HR><H2>"
foreach b {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} {
puts $afp "<A HREF=\"$b.htm\">$b</A>"
}
@@ -1657,22 +1681,27 @@ proc make-man-pages {html args} {
return {}
}
-set usercmddesc {The interpreters which implement Tcl and Tk.}
+parse_command_line
+
+set tcltkdesc ""; set cmdesc ""; set appdir ""
+if {$build_tcl} {append tcltkdesc "Tcl"; append cmdesc "Tcl"; append appdir "$tcldir"}
+if {$build_tcl && $build_tk} {append tcltkdesc "/"; append cmdesc " and "; append appdir ","}
+if {$build_tk} {append tcltkdesc "Tk"; append cmdesc "Tk"; append appdir "$tkdir"}
+
+set usercmddesc "The interpreters which implement $cmdesc."
set tclcmddesc {The commands which the <B>tclsh</B> interpreter implements.}
set tkcmddesc {The additional commands which the <B>wish</B> interpreter implements.}
set tcllibdesc {The C functions which a Tcl extended C program may use.}
set tklibdesc {The additional C functions which a Tk extended C program may use.}
-parse_command_line
-
if {1} {
if {[catch {
make-man-pages $webdir \
- "$tcltkdir/{$tkdir,$tcldir}/doc/*.1 {Tcl/Tk Applications} UserCmd {$usercmddesc}" \
- "$tcltkdir/$tcldir/doc/*.n {Tcl Commands} TclCmd {$tclcmddesc}" \
- "$tcltkdir/$tkdir/doc/*.n {Tk Commands} TkCmd {$tkcmddesc}" \
- "$tcltkdir/$tcldir/doc/*.3 {Tcl Library} TclLib {$tcllibdesc}" \
- "$tcltkdir/$tkdir/doc/*.3 {Tk Library} TkLib {$tklibdesc}"
+ "$tcltkdir/{$appdir}/doc/*.1 \"$tcltkdesc Applications\" UserCmd {$usercmddesc}" \
+ [expr {$build_tcl ? "$tcltkdir/$tcldir/doc/*.n {Tcl Commands} TclCmd {$tclcmddesc}" : ""}] \
+ [expr {$build_tk ? "$tcltkdir/$tkdir/doc/*.n {Tk Commands} TkCmd {$tkcmddesc}" : ""}] \
+ [expr {$build_tcl ? "$tcltkdir/$tcldir/doc/*.3 {Tcl Library} TclLib {$tcllibdesc}" : ""}] \
+ [expr {$build_tk ? "$tcltkdir/$tkdir/doc/*.3 {Tk Library} TkLib {$tklibdesc}" : ""}]
} error]} {
puts $error\n$errorInfo
}
diff --git a/unix/Makefile.in b/unix/Makefile.in
index 3b2e3d7..e299ff3 100644
--- a/unix/Makefile.in
+++ b/unix/Makefile.in
@@ -5,7 +5,7 @@
# "autoconf" program (constructs like "@foo@" will get replaced in the
# actual Makefile.
#
-# RCS: @(#) $Id: Makefile.in,v 1.129 2003/06/25 23:02:11 dkf Exp $
+# RCS: @(#) $Id: Makefile.in,v 1.130 2003/07/18 02:02:02 das Exp $
VERSION = @TCL_VERSION@
MAJOR_VERSION = @TCL_MAJOR_VERSION@
@@ -1391,9 +1391,12 @@ allpatch: dist
# TOOL_DIR.
#
-html:
+html-tcl: EXTRA_HTML_ARGS=--tcl
+html-tk: EXTRA_HTML_ARGS=--tk
+
+html html-tcl html-tk:
$(TCL_EXE) $(TOOL_DIR)/tcltk-man2html.tcl --htmldir=$(DISTDIR)/html \
- --srcdir=$(TOP_DIR)/..
+ --srcdir=$(TOP_DIR)/.. $(EXTRA_HTML_ARGS)
#
# Target to create a Macintosh version of the distribution. This will
diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c
index f15b573..1754e2d 100644
--- a/unix/tclUnixFCmd.c
+++ b/unix/tclUnixFCmd.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclUnixFCmd.c,v 1.30 2003/07/16 15:29:09 dgp Exp $
+ * RCS: @(#) $Id: tclUnixFCmd.c,v 1.31 2003/07/18 02:02:02 das Exp $
*
* Portions of this code were derived from NetBSD source code which has
* the following copyright notice:
@@ -91,7 +91,7 @@ static int SetPermissionsAttribute _ANSI_ARGS_((
static int GetModeFromPermString _ANSI_ARGS_((
Tcl_Interp *interp, char *modeStringPtr,
mode_t *modePtr));
-#ifdef HAVE_CHFLAGS
+#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE)
static int GetReadOnlyAttribute _ANSI_ARGS_((Tcl_Interp *interp,
int objIndex, Tcl_Obj *fileName,
Tcl_Obj **attributePtrPtr));
@@ -116,7 +116,7 @@ enum {
UNIX_GROUP_ATTRIBUTE,
UNIX_OWNER_ATTRIBUTE,
UNIX_PERMISSIONS_ATTRIBUTE,
-#ifdef HAVE_CHFLAGS
+#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE)
UNIX_READONLY_ATTRIBUTE,
#endif
#ifdef MAC_OSX_TCL
@@ -131,7 +131,7 @@ CONST char *tclpFileAttrStrings[] = {
"-group",
"-owner",
"-permissions",
-#ifdef HAVE_CHFLAGS
+#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE)
"-readonly",
#endif
#ifdef MAC_OSX_TCL
@@ -147,7 +147,7 @@ CONST TclFileAttrProcs tclpFileAttrProcs[] = {
{GetGroupAttribute, SetGroupAttribute},
{GetOwnerAttribute, SetOwnerAttribute},
{GetPermissionsAttribute, SetPermissionsAttribute},
-#ifdef HAVE_CHFLAGS
+#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE)
{GetReadOnlyAttribute, SetReadOnlyAttribute},
#endif
#ifdef MAC_OSX_TCL
@@ -1817,7 +1817,7 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint)
return nextCheckpoint;
}
-#ifdef HAVE_CHFLAGS
+#if defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE)
/*
*----------------------------------------------------------------------
*
@@ -1917,4 +1917,4 @@ SetReadOnlyAttribute(interp, objIndex, fileName, attributePtr)
}
return TCL_OK;
}
-#endif /* HAVE_CHFLAGS */
+#endif /* defined(HAVE_CHFLAGS) && defined(UF_IMMUTABLE) */