[25] | 1 | Tcl Mac OS X README |
---|
| 2 | ------------------- |
---|
| 3 | |
---|
| 4 | RCS: @(#) $Id: README,v 1.16 2007/12/13 15:26:03 dgp Exp $ |
---|
| 5 | |
---|
| 6 | This is the README file for the Mac OS X/Darwin version of Tcl. |
---|
| 7 | |
---|
| 8 | |
---|
| 9 | 1. Where to go for support |
---|
| 10 | -------------------------- |
---|
| 11 | |
---|
| 12 | - The tcl-mac mailing list on sourceforge is the best place to ask questions |
---|
| 13 | specific to Tcl & Tk on Mac OS X: |
---|
| 14 | http://lists.sourceforge.net/lists/listinfo/tcl-mac |
---|
| 15 | (this page also has a link to searchable archives of the list, please check them |
---|
| 16 | before asking on the list, many questions have already been answered). |
---|
| 17 | |
---|
| 18 | - For general Tcl/Tk questions, the newsgroup comp.lang.tcl is your best bet: |
---|
| 19 | http://groups.google.com/group/comp.lang.tcl/ |
---|
| 20 | |
---|
| 21 | - The Tcl'ers Wiki also has many pages dealing with Tcl & Tk on Mac OS X, see |
---|
| 22 | http://wiki.tcl.tk/references/3753! |
---|
| 23 | http://wiki.tcl.tk/references/8361! |
---|
| 24 | |
---|
| 25 | - Please report bugs with Tcl or Tk on Mac OS X to the sourceforge bug trackers: |
---|
| 26 | Tcl: http://sf.net/tracker/?func=add&group_id=10894&atid=110894 |
---|
| 27 | Tk: http://sf.net/tracker/?func=add&group_id=12997&atid=112997 |
---|
| 28 | please make sure that your report Tk specific bugs to the tktoolkit project bug |
---|
| 29 | tracker rather than the tcl project bug tracker. |
---|
| 30 | Mac OS X specific bugs should usually be assigned to 'das' or 'wolfsuit'. |
---|
| 31 | |
---|
| 32 | |
---|
| 33 | 2. Using Tcl on Mac OS X |
---|
| 34 | ------------------------ |
---|
| 35 | |
---|
| 36 | - At a minimum, Mac OS X 10.1 is required to run Tcl, but OS X 10.3 or higher is |
---|
| 37 | recommended (certain [file] operations behave incorrectly on earlier releases). |
---|
| 38 | |
---|
| 39 | - Unless weak-linking is used, Tcl built on Mac OS X 10.x will not run on 10.y |
---|
| 40 | with y < x; on the other hand Tcl built on 10.y will always run on 10.x with |
---|
| 41 | y <= x (but without any of the fixes and optimizations that would be available |
---|
| 42 | in a binary built on 10.x). |
---|
| 43 | Weak-linking is available on OS X 10.2 or later, it additionally allows Tcl |
---|
| 44 | built on 10.x to run on any 10.y with x > y >= z (for a chosen z >= 2). |
---|
| 45 | |
---|
| 46 | - Tcl extensions can be installed in any of: |
---|
| 47 | $HOME/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl |
---|
| 48 | $HOME/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks |
---|
| 49 | /System/Library/Frameworks (searched in that order). |
---|
| 50 | Given a potential package directory $pkg, Tcl on OSX checks for the file |
---|
| 51 | $pkg/Resources/Scripts/pkgIndex.tcl as well as the usual $pkg/pkgIndex.tcl. |
---|
| 52 | This allows building extensions as frameworks with all script files contained in |
---|
| 53 | the Resources/Scripts directory of the framework. |
---|
| 54 | |
---|
| 55 | - [load]able binary extensions can linked as either ordinary shared libraries |
---|
| 56 | (.dylib) or as MachO bundles (since 8.4.10/8.5a3); only bundles can be unloaded, |
---|
| 57 | and bundles are also loaded more efficiently from VFS (no temporary copy to the |
---|
| 58 | native filesystem required). |
---|
| 59 | |
---|
| 60 | - The 'deploy' target of macosx/GNUmakefile installs the html manpages into the |
---|
| 61 | standard documentation location in the Tcl framework: |
---|
| 62 | Tcl.framework/Resources/Documentation/Reference/Tcl |
---|
| 63 | No nroff manpages are installed by default by the GNUmakefile. |
---|
| 64 | |
---|
| 65 | - The Tcl framework can be installed in any of the system's standard |
---|
| 66 | framework directories: |
---|
| 67 | $HOME/Library/Frameworks /Library/Frameworks |
---|
| 68 | /Network/Library/Frameworks /System/Library/Frameworks |
---|
| 69 | |
---|
| 70 | |
---|
| 71 | 3. Building Tcl on Mac OS X |
---|
| 72 | --------------------------- |
---|
| 73 | |
---|
| 74 | - At least Mac OS X 10.1 is required to build Tcl, and Apple's Developer Tools |
---|
| 75 | need to be installed (only the most recent version matching your OS release is |
---|
| 76 | supported). The Developer Tools installer is available on Mac OS X retail disks |
---|
| 77 | or is present in /Applications/Installers on Macs that came with OS X |
---|
| 78 | preinstalled. The most recent version can be downloaded from the ADC website |
---|
| 79 | http://connect.apple.com (after you register for free ADC membership). |
---|
| 80 | |
---|
| 81 | - Tcl is most easily built as a Mac OS X framework via GNUmakefile in tcl/macosx |
---|
| 82 | (see below for details), but can also be built with the standard unix configure |
---|
| 83 | and make buildsystem in tcl/unix as on any other unix platform (indeed, the |
---|
| 84 | GNUmakefile is just a wrapper around the unix buildsystem). |
---|
| 85 | The Mac OS X specific configure flags are --enable-framework and |
---|
| 86 | --disable-corefoundation (which disables CF and notably reverts to the standard |
---|
| 87 | select based notifier). |
---|
| 88 | |
---|
| 89 | - It is also possible to build with Apple's IDE via the projects in tcl/macosx, |
---|
| 90 | take care to only use the project matching your DevTools and OS version: |
---|
| 91 | * Tcl.pbproj for Xcode or ProjectBuilder on 10.3 and earlier, this has a |
---|
| 92 | 'Tcl' target that simply calls through to the tcl/macosx/GNUMakefile. |
---|
| 93 | * Tcl.xcode for Xcode 2.4 on 10.4 and Xcode 2.5 on 10.4 and later, which |
---|
| 94 | additionally has a native 'tcltest' target useful for debugging, this |
---|
| 95 | target's 'Debug' build configuration has ZeroLink and Fix&Continue |
---|
| 96 | enabled, use the 'DebugNoFixZL' build configuration if you need a debug |
---|
| 97 | build without these features. The following additional build |
---|
| 98 | configurations are available for the 'Tcl' and 'tcltest' targets: |
---|
| 99 | 'DebugUnthreaded': debug build with threading turned off. |
---|
| 100 | 'DebugMemCompile': debug build with memory and bytecode debugging on. |
---|
| 101 | 'DebugLeaks': debug build with PURIFY defined. |
---|
| 102 | 'Debug64bit': builds the targets as 64bit with debugging enabled, |
---|
| 103 | requires a 64bit capable processor (i.e. G5 or Core2/Xeon). |
---|
| 104 | 'ReleaseUniversal': builds the targets as universal binaries for the |
---|
| 105 | ppc, ppc64, i386 and x86_64 architectures. |
---|
| 106 | 'ReleaseUniversal10.4uSDK': same as 'ReleaseUniversal' but builds |
---|
| 107 | against the 10.4u SDK, required to build universal binaries on |
---|
| 108 | PowerPC Tiger (where the system libraries are not universal). |
---|
| 109 | 'ReleasePPC10.3.9SDK': builds for PowerPC against the 10.3.9 SDK, useful |
---|
| 110 | for verifying on Tiger that building on Panther would succeed. |
---|
| 111 | 'ReleasePPC10.2.8SDK': builds for PowerPC with gcc-3.3 against the |
---|
| 112 | 10.2.8 SDK, useful to verify on Tiger that building on Jaguar |
---|
| 113 | would succeed. |
---|
| 114 | * Tcl.xcodeproj for Xcode 3.0 on 10.5 and later, which has the following |
---|
| 115 | additional build configuration: |
---|
| 116 | 'ReleaseUniversal10.5SDK': same as 'ReleaseUniversal' but builds |
---|
| 117 | against the 10.5 SDK on Leopard (with 10.5 deployment target). |
---|
| 118 | |
---|
| 119 | Notes about the native targets of the Xcode projects: |
---|
| 120 | * the Xcode projects refer to the toplevel tcl source directory through the |
---|
| 121 | TCL_SRCROOT user build setting, by default this is set to the |
---|
| 122 | project-relative path '../../tcl', if your tcl source directory is named |
---|
| 123 | differently, e.g. '../../tcl8.5', you'll need to manually change the |
---|
| 124 | TCL_SRCROOT setting by editing your ${USER}.pbxuser file (located inside |
---|
| 125 | the Tcl.xcodeproj bundle directory) with a text editor. |
---|
| 126 | * the native targets need a version of the unix configure script with config |
---|
| 127 | headers enabled, this is automatically generated as tcl/macosx/configure |
---|
| 128 | by the project but that requires 2.59 versions of autoconf & autoheader. |
---|
| 129 | These are not available on Mac OS X 10.5 by default and need to be |
---|
| 130 | installed manually. By default they are assumed to be installed as |
---|
| 131 | /usr/local/bin/autoconf-2.59 and /usr/local/bin/autoheader-2.59, set the |
---|
| 132 | AUTOCONF and AUTOHEADER build settings in ${USER}.pbxuser to their true |
---|
| 133 | locations if necessary. |
---|
| 134 | |
---|
| 135 | - To build universal binaries outside of Tcl.xcodeproj, set CFLAGS as follows: |
---|
| 136 | export CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 \ |
---|
| 137 | -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" |
---|
| 138 | This requires Mac OS X 10.4 and Xcode 2.4 (or Xcode 2.2 if -arch x86_64 is |
---|
| 139 | omitted, but _not_ Xcode 2.1) and will work on any of the architectures (the |
---|
| 140 | -isysroot flag is only required on PowerPC Tiger). |
---|
| 141 | Note that configure requires CFLAGS to contain a least one architecture that can |
---|
| 142 | be run on the build machine (i.e. ppc on G3/G4, ppc or ppc64 on G5, ppc or i386 |
---|
| 143 | on Core and ppc, i386 or x86_64 on Core2/Xeon). |
---|
| 144 | Universal builds of Tcl TEA extensions are also possible with CFLAGS set as |
---|
| 145 | above, they will be [load]able by universal as well as thin binaries of Tcl. |
---|
| 146 | |
---|
| 147 | - To enable weak-linking, set the MACOSX_DEPLOYMENT_TARGET environment variable |
---|
| 148 | to the minimal OS version (>= 10.2) the binaries should be able to run on, e.g: |
---|
| 149 | export MACOSX_DEPLOYMENT_TARGET=10.2 |
---|
| 150 | This requires Mac OS X 10.2 and gcc 3.1; if you have gcc 4 or later you can set |
---|
| 151 | CFLAGS instead: |
---|
| 152 | export CFLAGS="-mmacosx-version-min=10.2" |
---|
| 153 | The Tcl.xcode project is setup to produce binaries that can run on 10.2 or |
---|
| 154 | later (except for the Universal and SDK configurations). |
---|
| 155 | Support for weak-linking was added to the code for 8.4.14/8.5a5. |
---|
| 156 | |
---|
| 157 | Detailed Instructions for building with macosx/GNUmakefile |
---|
| 158 | ---------------------------------------------------------- |
---|
| 159 | |
---|
| 160 | - Unpack the tcl source release archive. |
---|
| 161 | |
---|
| 162 | - The following instructions assume the tcl source tree is named "tcl${ver}", |
---|
| 163 | where ${ver} is a shell variable containing the tcl version number (for example |
---|
| 164 | '8.4.12'). |
---|
| 165 | Setup the shell variable as follows: |
---|
| 166 | set ver="8.4.12" ;: if your shell is csh |
---|
| 167 | ver="8.4.12" ;: if your shell is sh |
---|
| 168 | The source tree will be named this way only if you are building from a release |
---|
| 169 | archive, if you are building from CVS, the version numbers will be missing; so |
---|
| 170 | set ${ver} to the empty string instead: |
---|
| 171 | set ver="" ;: if your shell is csh |
---|
| 172 | ver="" ;: if your shell is sh |
---|
| 173 | |
---|
| 174 | - The following steps will build Tcl from the Terminal, assuming you are located |
---|
| 175 | in the directory containing the tcl source tree: |
---|
| 176 | make -C tcl${ver}/macosx |
---|
| 177 | and the following will then install Tcl onto the root volume (admin password |
---|
| 178 | required): |
---|
| 179 | sudo make -C tcl${ver}/macosx install |
---|
| 180 | if you don't have the admin password, you can install into your home directory, |
---|
| 181 | instead by passing an INSTALL_ROOT argument to make: |
---|
| 182 | make -C tcl${ver}/macosx install INSTALL_ROOT="${HOME}/" |
---|
| 183 | |
---|
| 184 | - The default Makefile targets will build _both_ debug and optimized versions of |
---|
| 185 | the Tcl framework with the standard convention of naming the debug library |
---|
| 186 | Tcl.framework/Tcl_debug. |
---|
| 187 | This allows switching to the debug libraries at runtime by setting |
---|
| 188 | export DYLD_IMAGE_SUFFIX=_debug |
---|
| 189 | (c.f. man dyld for more details) |
---|
| 190 | |
---|
| 191 | If you only want to build and install the debug or optimized build, use the |
---|
| 192 | 'develop' or 'deploy' target variants of the Makefiles, respectively. |
---|
| 193 | For example, to build and install only the optimized versions: |
---|
| 194 | make -C tcl${ver}/macosx deploy |
---|
| 195 | sudo make -C tcl${ver}/macosx install-deploy |
---|