Purpose: Discuss what it takes for a softare author to create a Tcl extension that can be used by others. ---- * See the [Tcl Core Team] team's example extension ftp://ftp.scriptics.com/pub/tcl/examples/tea/ * Read the [TEA] '''T'''cl '''E'''xtension '''A'''rchitecture document [http://dev.scriptics.com/doc/tea/] * Determine whether the extension can and will be cross platform * Is this relevant to your extension? * Are you interested in supporting cross platform? * What needs to be done? * Decide whether you want a script library extension versus compiled (or mixed) library extension. * If script only, what are the core issues to consider? * Portable code - see the Ajuba Solutions style guide * What installation aids do you provide? Options include: * Nothing - let the user figure it out * Text describing what to do * Tcl script to assist in configuration / installation * configure / makefile to assist in configuration * What documentation do you supply? Options include: * None - let the users read the source * * Plain text - everyone has an editor these days * HTML - everyone has a browser these days * *roff man pages - it's what everyone considers * XML - it's the coming thing * Other formats (TeX, texinfo, PostScript, PDF, WinHelp, etc.) * What format is used for MacOS? * What additional issues can be considered? * If compiled language only, what are the core issues to consider? * Which compiler? * ANSI C only? * Portable C? * ANSI C++ ? * ''Portable'' C++ ? * Other (FORTRAN, Ada, ...)? * Be certain to use Tcl functions when available, to gain as much cross platform help as possible * Be certain to use Tcl's compat library when your platform(s) functions are broken * Provide your own compat library functions when you need to replace the functions on a particular plaforms * Propose new Tcl cross platform library functions when you need something that isn't already in Tcl. See [TIP] for this process. * Tools for writing extensions: [SWIG], mktclapp [http://www.hwaci.com/sw/mktclapp/] * the so-called RTFS system ---- LV: What is RTFS? MS: RTF source, I guess. ---- '''[Building Tcl DLL's for Windows]'''