focal (3) practcl.3tcl.gz

Provided by: tcllib_1.20+dfsg-1_all bug

NAME

       practcl - The Practcl Module

SYNOPSIS

       package require TclOO  1.0

       proc practcl::cat fname

       proc practcl::docstrip text

       proc putb ?map? text

       proc Proc name arglist body

       proc noop ?args?

       proc practcl::debug ?args?

       proc practcl::doexec ?args?

       proc practcl::doexec_in path ?args?

       proc practcl::dotclexec ?args?

       proc practcl::domake path ?args?

       proc practcl::domake.tcl path ?args?

       proc practcl::fossil path ?args?

       proc practcl::fossil_status dir

       proc practcl::os

       proc practcl::mkzip exename barekit vfspath

       proc practcl::sort_dict list

       proc practcl::local_os

       proc practcl::config.tcl path

       proc practcl::read_configuration path

       proc practcl::tcllib_require pkg ?args?

       proc practcl::platform::tcl_core_options os

       proc practcl::platform::tk_core_options os

       proc practcl::read_rc_file filename ?localdat ?

       proc practcl::read_sh_subst line info

       proc practcl::read_sh_file filename ?localdat ?

       proc practcl::read_Config.sh filename

       proc practcl::read_Makefile filename

       proc practcl::cputs varname ?args?

       proc practcl::tcl_to_c body

       proc practcl::_tagblock text ?style tcl? ?note ?

       proc practcl::de_shell data

       proc practcl::grep pattern ?files ?

       proc practcl::file_lexnormalize sp

       proc practcl::file_relative base dst

       proc practcl::findByPattern basedir patterns

       proc practcl::log fname comment

       proc practcl::_pkgindex_simpleIndex path

       proc practcl::_pkgindex_directory path

       proc practcl::_pkgindex_path_subdir path

       proc practcl::pkgindex_path ?args?

       proc practcl::installDir d1 d2

       proc practcl::copyDir d1 d2 ?toplevel 1?

       proc practcl::buildModule modpath

       proc practcl::installModule modpath DEST

       proc practcl::trigger ?args?

       proc practcl::depends ?args?

       proc practcl::target name info ?action ?

       method constructor

       method argspec argspec

       method comment block

       method keyword.Annotation resultvar commentblock type name body

       method keyword.Class resultvar commentblock name body

       method keyword.class resultvar commentblock name body

       method keyword.Class_Method resultvar commentblock name ?args?

       method keyword.method resultvar commentblock name ?args?

       method keyword.proc commentblock name argspec

       method reset

       method Main

       method section.method keyword method minfo

       method section.annotation type name iinfo

       method section.class class_name class_info

       method section.command procinfo

       method manpage ?header value? ?footer value? ?authors list?

       method scan_text text

       method scan_file filename

       method _MorphPatterns

       method define submethod ?args?

       method graft ?args?

       method initialize

       method link command ?args?

       method morph classname

       method script script

       method select

       method source filename

       classmethod select object

       method config.sh

       method BuildDir PWD

       method MakeDir srcdir

       method read_configuration

       method build-cflags PROJECT DEFS namevar versionvar defsvar

       method critcl ?args?

       method Autoconf

       method BuildDir PWD

       method ConfigureOpts

       method MakeDir srcdir

       method make {} autodetect

       method make {} clean

       method make {} compile

       method make {} install DEST

       method build-compile-sources PROJECT COMPILE CPPCOMPILE INCLUDES

       method build-Makefile path PROJECT

       method build-library outfile PROJECT

       method build-tclsh outfile PROJECT ?path auto?

       method BuildDir PWD

       method make {} autodetect

       method make {} clean

       method make {} compile

       method make {} install DEST

       method MakeDir srcdir

       method NmakeOpts

       method constructor module_object name info ?action_body ?

       method do

       method check

       method output

       method reset

       method triggers

       method constructor parent ?args?

       method child method

       method go

       method cstructure name definition ?argdat ?

       method include header

       method include_dir ?args?

       method include_directory ?args?

       method c_header body

       method c_code body

       method c_function header body ?info ?

       method c_tcloomethod name body ?arginfo ?

       method cmethod name body ?arginfo ?

       method c_tclproc_nspace nspace

       method c_tclcmd name body ?arginfo ?

       method c_tclproc_raw name body ?arginfo ?

       method tcltype name argdat

       method project-compile-products

       method implement path

       method initialize

       method linktype

       method generate-cfile-constant

       method generate-cfile-header

       method generate-cfile-tclapi

       method generate-loader-module

       method Collate_Source CWD

       method select

       classmethod select object

       method code section body

       method Collate_Source CWD

       method project-compile-products

       method generate-debug ?spaces ?

       method generate-cfile-constant

       method generate-cfile-public-structure

       method generate-cfile-header

       method generate-cfile-global

       method generate-cfile-private-typedef

       method generate-cfile-private-structure

       method generate-cfile-functions

       method generate-cfile-tclapi

       method generate-hfile-public-define

       method generate-hfile-public-macro

       method generate-hfile-public-typedef

       method generate-hfile-public-structure

       method generate-hfile-public-headers

       method generate-hfile-public-function

       method generate-hfile-public-includes

       method generate-hfile-public-verbatim

       method generate-loader-external

       method generate-loader-module

       method generate-stub-function

       method IncludeAdd headervar ?args?

       method generate-tcl-loader

       method generate-tcl-pre

       method generate-tcl-post

       method linktype

       method Ofile filename

       method project-static-packages

       method toolset-include-directory

       method target method ?args?

       method project-compile-products

       method generate-loader-module

       method project-compile-products

       method linker-products configdict

       method initialize

       variable make_object

       method _MorphPatterns

       method add ?args?

       method install-headers ?args?

       method make {} _preamble

       method make {} pkginfo

       method make {} objects

       method make {} object name

       method make {} reset

       method make {} trigger ?args?

       method make {} depends ?args?

       method make {} filename name

       method make {} target name Info body

       method make {} todo

       method make {} do

       method child which

       method generate-c

       method generate-h

       method generate-loader

       method initialize

       method implement path

       method linktype

       method _MorphPatterns

       method constructor ?args?

       method add_object object

       method add_project pkg info ?oodefine ?

       method add_tool pkg info ?oodefine ?

       method build-tclcore

       method child which

       method linktype

       method project pkg ?args?

       method tclcore

       method tkcore

       method tool pkg ?args?

       method clean PATH

       method project-compile-products

       method go

       method generate-decls pkgname path

       method implement path

       method generate-make path

       method linktype

       method package-ifneeded ?args?

       method shared_library ?filename ?

       method static_library ?filename ?

       method build-tclkit_main PROJECT PKG_OBJS

       method Collate_Source CWD

       method wrap PWD exename vfspath ?args?

       classmethod Sandbox object

       classmethod select object

       classmethod claim_option

       classmethod claim_object object

       classmethod claim_path path

       method scm_info

       method DistroMixIn

       method Sandbox

       method SrcDir

       method ScmTag

       method ScmClone

       method ScmUnpack

       method ScmUpdate

       method Unpack

       classmethod claim_object object

       classmethod claim_option

       classmethod claim_path path

       method ScmUnpack

       classmethod claim_object obj

       classmethod claim_option

       classmethod claim_path path

       method scm_info

       method ScmClone

       method ScmTag

       method ScmUnpack

       method ScmUpdate

       classmethod claim_object obj

       classmethod claim_option

       classmethod claim_path path

       method ScmTag

       method ScmUnpack

       method ScmUpdate

       method _MorphPatterns

       method BuildDir PWD

       method child which

       method compile

       method go

       method install ?args?

       method linktype

       method linker-products configdict

       method linker-external configdict

       method linker-extra configdict

       method env-bootstrap

       method env-exec

       method env-install

       method env-load

       method env-present

       method sources

       method update

       method unpack

       method env-bootstrap

       method env-present

       method linktype

       method env-bootstrap

       method env-install

       method env-present

       method install DEST

       method kettle path ?args?

       method install DEST

       method install DEST

       method env-bootstrap

       method env-install

       method env-present

       method install DEST

       method install-module DEST ?args?

       method env-bootstrap

       method env-install

       method install DEST

       method install-module DEST ?args?

       method clean

       method env-install

       method project-compile-products

       method ComputeInstall

       method go

       method linker-products configdict

       method project-static-packages

       method BuildDir PWD

       method compile

       method Configure

       method install DEST

       method install DEST

       method install DEST

       method env-bootstrap

       method env-present

       method env-install

       method go

       method linktype

________________________________________________________________________________________________________________

DESCRIPTION

       The  Practcl  module  is a tool for integrating large modules for C API Tcl code that requires custom Tcl
       types and TclOO objects.

       The concept with Practcl is that is a single file package that can assist  any  tcl  based  project  with
       distribution,  compilation, linking, VFS preparation, executable assembly, and installation. Practcl also
       allows one project to invoke the build system from another project, allowing complex projects such  as  a
       statically linked basekit to be assembled with relative ease.

       Practcl ships as a single file, and aside from a Tcl 8.6 interpreter, has no external dependencies.

       Making a practcl project

COMMANDS

       proc practcl::cat fname
              Concatenate a file

       proc practcl::docstrip text
              Strip  the  global  comments from tcl code. Used to prevent the documentation markup comments from
              clogging up files intended for distribution in machine readable format.

       proc putb ?map? text
              Append a line of text to a variable. Optionally apply a string mapping.

       proc Proc name arglist body
              Generate a proc if no command already exists by that name

       proc noop ?args?
              A command to do nothing. A handy way of negating an  instruction  without  having  to  comment  it
              completely out.  It's also a handy attachment point for an object to be named later

       proc practcl::debug ?args?

       proc practcl::doexec ?args?
              Drop in a static copy of Tcl

       proc practcl::doexec_in path ?args?

       proc practcl::dotclexec ?args?

       proc practcl::domake path ?args?

       proc practcl::domake.tcl path ?args?

       proc practcl::fossil path ?args?

       proc practcl::fossil_status dir

       proc practcl::os

       proc practcl::mkzip exename barekit vfspath
              Build  a  zipfile. On tcl8.6 this invokes the native Zip implementation on older interpreters this
              invokes zip via exec

       proc practcl::sort_dict list
              Dictionary sort a key/value list. Needed because pre tcl8.6 does not have lsort -stride 2

       proc practcl::local_os
              Returns a dictionary describing the local operating system.  Fields return include:

              •      download - Filesystem path where fossil repositories and source tarballs are downloaded for
                     the current user

              •      EXEEXT - The extension to give to executables. (i.e. .exe on windows)

              •      fossil_mirror - A URI for a local network web server who acts as a fossil repository mirror

              •      local_install  -  Filesystem  path where packages for local consumption by the current user
                     are installed

              •      prefix - The prefix as given to the Tcl  core/TEA  for  installation  to  local_install  in
                     ./configure

              •      sandbox - The file location where this project unpacks external projects

              •      TEACUP_PROFILE  -  The ActiveState/Teacup canonical name for this platform (i.e. win32-ix86
                     macosx10.5-i386-x86_84)

              •      TEACUP_OS - The local operating system (windows, macosx,  openbsd,  etc).  Gives  the  same
                     answer as tcl.m4, except that macosx is given as macosx instead of Darwin.

              •      TEA_PLATFORM  -  The  platform  returned  by  uname  -s-uname -r (on Unix), or "windows" on
                     Windows

              •      TEACUP_ARCH - The processor architecture for the local os (i.e. ix86, x86_64)

              •      TEACUP_ARCH - The processor architecture for the local os (i.e. ix86, x86_64)

              •      teapot - Filesystem path where teapot package files are downloaded for the current user

              •      userhome - File path to store localized preferences, cache  download  files,  etc  for  the
                     current user

              This command uses a combination of local checks with Exec, any tclConfig.sh file that is resident,
              autoconf data where already computed, and data gleaned from a file named practcl.rc  in  userhome.
              The location for userhome varies by platform and operating system:

              •      Windows: ::env(LOCALAPPDATA)/Tcl

              •      Macos: ~/Library/Application Support/Tcl

              •      Other: ~/tcl

       proc practcl::config.tcl path
              A  transparent call to ::practcl::read_configuration to preserve backward compadibility with older
              copies of Practcl

       proc practcl::read_configuration path
              Detect local platform. This command looks for data gleaned by autoconf or autosetup  in  the  path
              specified,  or  perform  its  own  logic  tests if neither has been run.  A file named config.site
              present in the location indicates that this project is cross compiling, and  the  data  stored  in
              that file is used for the compiler and linker.

              This command looks for information from the following files, in the following order:

              •      config.tcl  - A file generated by autoconf/configure in newer editions of TEA, encoded as a
                     Tcl script.

              •      config.site - A file containing cross compiler information, encoded as a SH script

              •      ::env(VisualStudioVersion) - On Windows, and environmental value that indicates  MS  Visual
                     Studio is installed

       This  command  returns  a  dictionary  containing all of the data cleaned from the sources above.  In the
       absence of any guidance this command returns the same output as ::practcl::local_os.  In  this  mode,  if
       the  environmental  variable  VisualStudioVersion  exists, this command will provide a template of fields
       that are appropriate for compiling on Windows under Microsoft Visual Studio.  The  USEMSVC  flag  in  the
       dictionary is a boolean flag to indicate if this is indeed the case.

       proc practcl::tcllib_require pkg ?args?
              Try to load  a package, and failing that retrieve tcllib

       proc practcl::platform::tcl_core_options os
              Return the string to pass to ./configure to compile the Tcl core for the given OS.

              •      windows: --with-tzdata --with-encoding utf-8

              •      macosx:  --enable-corefoundation=yes   --enable-framework=no  --with-tzdata --with-encoding
                     utf-8

              •      other: --with-tzdata --with-encoding utf-8

       proc practcl::platform::tk_core_options os

       proc practcl::read_rc_file filename ?localdat ?
              Read a stylized key/value list stored in a file

       proc practcl::read_sh_subst line info
              Converts a XXX.sh file into a series of Tcl variables

       proc practcl::read_sh_file filename ?localdat ?

       proc practcl::read_Config.sh filename
              A simpler form of read_sh_file tailored to pulling data from (tcl|tk)Config.sh

       proc practcl::read_Makefile filename
              A simpler form of read_sh_file tailored to pulling data from a Makefile

       proc practcl::cputs varname ?args?
              Append arguments to a buffer The command works like puts in that each call will also insert a line
              feed. Unlike puts, blank links in the interstitial are suppressed

       proc practcl::tcl_to_c body

       proc practcl::_tagblock text ?style tcl? ?note ?

       proc practcl::de_shell data

       proc practcl::grep pattern ?files ?
              Search for the pattern pattern amongst $files

       proc practcl::file_lexnormalize sp

       proc practcl::file_relative base dst
              Calculate a relative path between base and dst

              Example:

                ::practcl::file_relative ~/build/tcl/unix ~/build/tcl/library
                > ../library

       proc practcl::findByPattern basedir patterns

       proc practcl::log fname comment
              Record an event in the practcl log

       proc practcl::_pkgindex_simpleIndex path

       proc practcl::_pkgindex_directory path
              Return  true  if  the pkgindex file contains any statement other than "package ifneeded" and/or if
              any package ifneeded loads a DLL

       proc practcl::_pkgindex_path_subdir path
              Helper function for ::practcl::pkgindex_path

       proc practcl::pkgindex_path ?args?
              Index all paths given as though they will end up in the same virtual file system

       proc practcl::installDir d1 d2
              Delete the contents of d2, and then recusively Ccopy the contents of d1 to d2.

       proc practcl::copyDir d1 d2 ?toplevel 1?
              Recursively copy the contents of d1 to d2

       proc practcl::buildModule modpath

       proc practcl::installModule modpath DEST
              Install a module from MODPATH to the directory specified.   dpath  is  assumed  to  be  the  fully
              qualified path where module is to be placed.  Any existing files will be deleted at that path.  If
              the path is symlink the process will return with no error  and  no  action.   If  the  module  has
              contents  in  the  build/  directory  that  are  newer  than  the  .tcl files in the module source
              directory, and a build/build.tcl file exists, the build/build.tcl file  is  run.   If  the  source
              directory  includes  a  file  named  index.tcl, the directory is assumed to be in the tao style of
              modules, and the entire directory (and all subdirectories) are copied verbatim.  If  no  index.tcl
              file  is  present,  all .tcl files are copied from the module source directory, and a pkgIndex.tcl
              file is generated if non yet exists.  I a folder named htdocs exists in the source directory, that
              directory is copied verbatim to the destination.

       proc practcl::trigger ?args?
              Trigger build targets, and recompute dependencies

              Internals:

                ::practcl::LOCAL make trigger {*}$args
                foreach {name obj} [::practcl::LOCAL make objects] {
                  set ::make($name) [$obj do]
                }

       proc practcl::depends ?args?
              Calculate if a dependency for any of the arguments needs to be fulfilled or rebuilt.

              Internals:

                ::practcl::LOCAL make depends {*}$args

       proc practcl::target name info ?action ?
              Declare  a build product. This proc is just a shorthand for ::practcl::LOCAL make task $name $info
              $action

              Registering a build product with this command will create an  entry  in  the  global   array,  and
              populate a value in the global  array.

              Internals:

                set obj [::practcl::LOCAL make task $name $info $action]
                set ::make($name) 0
                set filename [$obj define get filename]
                if {$filename ne {}} {
                  set ::target($name) $filename
                }

CLASSES

   CLASS  PRACTCL::DOCTOOL
              { set authors {
                 {John Doe} {jdoe@illustrious.edu}
                 {Tom RichardHarry} {tomdickharry@illustrius.edu}
               }
               # Create the object
               ::practcl::doctool create AutoDoc
               set fout [open [file join $moddir module.tcl] w]
               foreach file [glob [file join $srcdir *.tcl]] {
                 set content [::practcl::cat [file join $srcdir $file]]
                  # Scan the file
                  AutoDoc scan_text $content
                  # Strip the comments from the distribution
                  puts $fout [::practcl::docstrip $content]
               }
               # Write out the manual page
               set manout [open [file join $moddir module.man] w]
               dict set args header [string map $modmap [::practcl::cat [file join $srcdir manual.txt]]]
               dict set args footer [string map $modmap [::practcl::cat [file join $srcdir footer.txt]]]
               dict set args authors $authors
               puts $manout [AutoDoc manpage {*}$args]
               close $manout

              }

       Tool for build scripts to dynamically generate manual files from comments in source code files

       Methods

       method constructor

       method argspec argspec
              Process  an argument list into an informational dict.  This method also understands non-positional
              arguments     expressed     in     the     notation     of     Tip      471      https://core.tcl-
              lang.org/tips/doc/trunk/tip/479.md.

              The  output  will  be  a  dictionary  of  all of the fields and whether the fields are positional,
              mandatory, and whether they have a default value.

              Example:

                 my argspec {a b {c 10}}

                 > a {positional 1 mandatory 1} b {positional 1 mandatory 1} c {positional 1 mandatory 0 default 10}

       method comment block
              Convert a block of comments into an informational dictionary.  If lines in the comment start  with
              a  single  word ending in a colon, all subsequent lines are appended to a dictionary field of that
              name.  If no fields are given, all of the text is appended to the description field.

              Example:

               my comment {Does something cool}
               > description {Does something cool}

               my comment {
               title : Something really cool
               author : Sean Woods
               author : John Doe
               description :
               This does something really cool!
               }
               > description {This does something really cool!}
                 title {Something really cool}
                 author {Sean Woods
                 John Doe}

       method keyword.Annotation resultvar commentblock type name body

       method keyword.Class resultvar commentblock name body
              Process an oo::objdefine call that modifies the class object itself

       method keyword.class resultvar commentblock name body
              Process an oo::define, clay::define, etc statement.

       method keyword.Class_Method resultvar commentblock name ?args?
              Process a statement for a clay style class method

       method keyword.method resultvar commentblock name ?args?
              Process a statement for a tcloo style object method

       method keyword.proc commentblock name argspec
              Process a proc statement

       method reset
              Reset the state of the object and its embedded coroutine

       method Main
              Main body of the embedded coroutine for the object

       method section.method keyword method minfo
              Generate the manual page text for a method or proc

       method section.annotation type name iinfo

       method section.class class_name class_info
              Generate the manual page text for a class

       method section.command procinfo
              Generate the manual page text for the commands section

       method manpage ?header value? ?footer value? ?authors list?
              Generate the manual page. Returns the completed text suitable for saving in .man file.  The header
              argument  is  a  block of doctools text to go in before the machine generated section. footer is a
              block of doctools text to go in after  the  machine  generated  section.  authors  is  a  list  of
              individual authors and emails in the form of AUTHOR EMAIL ?AUTHOR EMAIL?...

       method scan_text text
              Scan a block of text

       method scan_file filename
              Scan a file of text

   CLASS  PRACTCL::METACLASS
       The metaclass for all practcl objects

       Methods

       method _MorphPatterns

       method define submethod ?args?

       method graft ?args?

       method initialize

       method link command ?args?

       method morph classname

       method script script

       method select

       method source filename

   CLASS  PRACTCL::TOOLSET
       Ancestor-less  class  intended  to  be a mixin which defines a family of build related behaviors that are
       modified when targetting either gcc or msvc

       Class Methods

       classmethod select object
              Perform the selection for the toolset mixin

       Methods

       method config.sh
              find or fake a key/value list describing this project

       method BuildDir PWD
              Compute the location where the product will be built

       method MakeDir srcdir
              Return where the Makefile is located relative to srcdir.  For this implementation the  MakeDir  is
              always srcdir.

       method read_configuration
              Read  information  about  the  build  process  for this package.  For this implementation, data is
              sought in the following locations in the  following  order:  config.tcl  (generated  by  practcl.)
              PKGConfig.sh. The Makefile

              If the Makefile needs to be consulted, but does not exist, the Configure method is invoked

       method build-cflags PROJECT DEFS namevar versionvar defsvar
              method  DEFS  This  method  populates  4  variables:  name - The name of the package version - The
              version of the package defs - C flags passed to the compiler includedir - A list of paths to  feed
              to the compiler for finding headers

       method critcl ?args?
              Invoke critcl in an external process

   CLASS  PRACTCL::TOOLSET.GCC
       ancestors: practcl::toolset

       Methods

       method Autoconf

       method BuildDir PWD

       method ConfigureOpts

       method MakeDir srcdir
              Detect what directory contains the Makefile template

       method make {} autodetect

       method make {} clean

       method make {} compile

       method make {} install DEST

       method build-compile-sources PROJECT COMPILE CPPCOMPILE INCLUDES

       method build-Makefile path PROJECT

       method build-library outfile PROJECT
              Produce a static or dynamic library

       method build-tclsh outfile PROJECT ?path auto?
              Produce a static executable

   CLASS  PRACTCL::TOOLSET.MSVC
       ancestors: practcl::toolset

       Methods

       method BuildDir PWD
              MSVC always builds in the source directory

       method make {} autodetect
              Do nothing

       method make {} clean

       method make {} compile

       method make {} install DEST

       method MakeDir srcdir
              Detect what directory contains the Makefile template

       method NmakeOpts

   CLASS  PRACTCL::MAKE_OBJ
       ancestors: practcl::metaclass

       A  build  deliverable  object.  Normally  an object file, header, or tcl script which must be compiled or
       generated in some way

       Methods

       method constructor module_object name info ?action_body ?

       method do

       method check

       method output

       method reset

       method triggers

   CLASS  PRACTCL::OBJECT
       ancestors: practcl::metaclass

       A generic Practcl object

       Methods

       method constructor parent ?args?

       method child method

       method go

   CLASS  PRACTCL::DYNAMIC
       Dynamic blocks do not generate their own .c files, instead the contribute to the amalgamation of the main
       library file

       Methods

       method cstructure name definition ?argdat ?
              Parser functions

       method include header

       method include_dir ?args?

       method include_directory ?args?

       method c_header body

       method c_code body

       method c_function header body ?info ?

       method c_tcloomethod name body ?arginfo ?

       method cmethod name body ?arginfo ?
              Alias to classic name

       method c_tclproc_nspace nspace

       method c_tclcmd name body ?arginfo ?

       method c_tclproc_raw name body ?arginfo ?
              Alias to classic name

       method tcltype name argdat

       method project-compile-products
              Module interactions

       method implement path

       method initialize
              Practcl internals

       method linktype

       method generate-cfile-constant

       method generate-cfile-header

       method generate-cfile-tclapi
              Generate code that provides implements Tcl API calls

       method generate-loader-module
              Generate code that runs when the package/module is initialized into the interpreter

       method Collate_Source CWD

       method select
              Once an object marks itself as some flavor of dynamic, stop trying to morph it into something else

   CLASS  PRACTCL::PRODUCT
       A deliverable for the build system

       Class Methods

       classmethod select object

       Methods

       method code section body

       method Collate_Source CWD

       method project-compile-products

       method generate-debug ?spaces ?

       method generate-cfile-constant

       method generate-cfile-public-structure
              Populate const static data structures

       method generate-cfile-header

       method generate-cfile-global

       method generate-cfile-private-typedef

       method generate-cfile-private-structure

       method generate-cfile-functions
              Generate code that provides subroutines called by Tcl API methods

       method generate-cfile-tclapi
              Generate code that provides implements Tcl API calls

       method generate-hfile-public-define

       method generate-hfile-public-macro

       method generate-hfile-public-typedef

       method generate-hfile-public-structure

       method generate-hfile-public-headers

       method generate-hfile-public-function

       method generate-hfile-public-includes

       method generate-hfile-public-verbatim

       method generate-loader-external

       method generate-loader-module

       method generate-stub-function

       method IncludeAdd headervar ?args?

       method generate-tcl-loader

       method generate-tcl-pre
              This methods generates any Tcl script file which is required to pre-initialize the C library

       method generate-tcl-post

       method linktype

       method Ofile filename

       method project-static-packages
              Methods called by the master project

       method toolset-include-directory
              Methods called by the toolset

       method target method ?args?

   CLASS  PRACTCL::PRODUCT.CHEADER
       ancestors: practcl::product

       A product which generated from a C header file. Which is to say, nothing.

       Methods

       method project-compile-products

       method generate-loader-module

   CLASS  PRACTCL::PRODUCT.CSOURCE
       ancestors: practcl::product

       A product which generated from a C source file. Normally an object (.o) file.

       Methods

       method project-compile-products

   CLASS  PRACTCL::PRODUCT.CLIBRARY
       ancestors: practcl::product

       A  product  which  is generated from a compiled C library.  Usually a .a or a .dylib file, but in complex
       cases may actually just be a conduit for one project to integrate the source code of another

       Methods

       method linker-products configdict

   CLASS  PRACTCL::PRODUCT.DYNAMIC
       ancestors: practcl::dynamic practcl::product

       A product which is generated from C code that itself is generated by practcl or some other means. This  C
       file  may  or  may  not produce its own .o file, depending on whether it is eligible to become part of an
       amalgamation

       Methods

       method initialize

   CLASS  PRACTCL::PRODUCT.CRITCL
       ancestors: practcl::dynamic practcl::product

       A binary product produced by critcl. Note: The  implementation  is  not  written  yet,  this  class  does
       nothing.

   CLASS  PRACTCL::MODULE
       ancestors: practcl::object practcl::product.dynamic

       In  the  end,  all  C  code must be loaded into a module This will either be a dynamically loaded library
       implementing a tcl extension, or a compiled in segment of a custom shell/app

       Variable

       variable make_object

       Methods

       method _MorphPatterns

       method add ?args?

       method install-headers ?args?

       method make {} _preamble

       method make {} pkginfo

       method make {} objects
              Return a dictionary of all handles and associated objects

       method make {} object name
              Return the object associated with handle name

       method make {} reset
              Reset all deputy objects

       method make {} trigger ?args?
              Exercise the triggers method for all handles listed

       method make {} depends ?args?
              Exercise the check method for all handles listed

       method make {} filename name
              Return the file name of the build product for the listed handle

       method make {} target name Info body

       method make {} todo
              Return a list of handles for object which return true for the do method

       method make {} do
              For each target exercise the action specified in the action definition if the  do  method  returns
              true

       method child which

       method generate-c
              This  methods  generates  the contents of an amalgamated .c file which implements the loader for a
              batch of tools

       method generate-h
              This methods generates the contents of an amalgamated .h file which describes the  public  API  of
              this module

       method generate-loader

       method initialize

       method implement path

       method linktype

   CLASS  PRACTCL::PROJECT
       ancestors: practcl::module

       A toplevel project that is a collection of other projects

       Methods

       method _MorphPatterns

       method constructor ?args?

       method add_object object

       method add_project pkg info ?oodefine ?

       method add_tool pkg info ?oodefine ?

       method build-tclcore
              Compile the Tcl core. If the define tk is true, compile the Tk core as well

       method child which

       method linktype

       method project pkg ?args?
              Exercise the methods of a sub-object

       method tclcore

       method tkcore

       method tool pkg ?args?

   CLASS  PRACTCL::LIBRARY
       ancestors: practcl::project

       A toplevel project that produces a library

       Methods

       method clean PATH

       method project-compile-products

       method go

       method generate-decls pkgname path

       method implement path

       method generate-make path
              Backward compadible call

       method linktype

       method package-ifneeded ?args?
              Create a "package ifneeded" Args are a list of aliases for which this package will answer to

       method shared_library ?filename ?

       method static_library ?filename ?

   CLASS  PRACTCL::TCLKIT
       ancestors: practcl::library

       A toplevel project that produces a self-contained executable

       Methods

       method build-tclkit_main PROJECT PKG_OBJS

       method Collate_Source CWD

       method wrap PWD exename vfspath ?args?
              Wrap an executable

   CLASS  PRACTCL::DISTRIBUTION
       Standalone  class to manage code distribution This class is intended to be mixed into another class (Thus
       the lack of ancestors)

       Class Methods

       classmethod Sandbox object

       classmethod select object

       classmethod claim_option

       classmethod claim_object object

       classmethod claim_path path

       Methods

       method scm_info

       method DistroMixIn

       method Sandbox

       method SrcDir

       method ScmTag

       method ScmClone

       method ScmUnpack

       method ScmUpdate

       method Unpack

   CLASS  PRACTCL::DISTRIBUTION.SNAPSHOT
       ancestors: practcl::distribution

       A file distribution from zip, tarball, or other non-scm archive format

       Class Methods

       classmethod claim_object object

       classmethod claim_option

       classmethod claim_path path

       Methods

       method ScmUnpack

   CLASS  PRACTCL::DISTRIBUTION.FOSSIL
       ancestors: practcl::distribution

       A file distribution based on fossil

       Class Methods

       classmethod claim_object obj
              Check for markers in the metadata

       classmethod claim_option

       classmethod claim_path path
              Check for markers in the source root

       Methods

       method scm_info

       method ScmClone
              Clone the source

       method ScmTag

       method ScmUnpack

       method ScmUpdate

   CLASS  PRACTCL::DISTRIBUTION.GIT
       ancestors: practcl::distribution

       A file distribution based on git

       Class Methods

       classmethod claim_object obj

       classmethod claim_option

       classmethod claim_path path

       Methods

       method ScmTag

       method ScmUnpack

       method ScmUpdate

   CLASS  PRACTCL::SUBPROJECT
       ancestors: practcl::module

       A subordinate project

       Methods

       method _MorphPatterns

       method BuildDir PWD

       method child which

       method compile

       method go

       method install ?args?
              Install project into the local build system

       method linktype

       method linker-products configdict

       method linker-external configdict

       method linker-extra configdict

       method env-bootstrap
              Methods for packages/tools that can be downloaded possibly  built  and  used  internally  by  this
              Practcl process Load the facility into the interpreter

       method env-exec
              Return a file path that exec can call

       method env-install
              Install the tool into the local environment

       method env-load
              Do whatever is necessary to get the tool into the local environment

       method env-present
              Check if tool is available for load/already loaded

       method sources

       method update

       method unpack

   CLASS  PRACTCL::SUBPROJECT.SOURCE
       ancestors: practcl::subproject practcl::library

       A project which the kit compiles and integrates the source for itself

       Methods

       method env-bootstrap

       method env-present

       method linktype

   CLASS  PRACTCL::SUBPROJECT.TEAPOT
       ancestors: practcl::subproject

       a copy from the teapot

       Methods

       method env-bootstrap

       method env-install

       method env-present

       method install DEST

   CLASS  PRACTCL::SUBPROJECT.KETTLE
       ancestors: practcl::subproject

       Methods

       method kettle path ?args?

       method install DEST

   CLASS  PRACTCL::SUBPROJECT.CRITCL
       ancestors: practcl::subproject

       Methods

       method install DEST

   CLASS  PRACTCL::SUBPROJECT.SAK
       ancestors: practcl::subproject

       Methods

       method env-bootstrap

       method env-install

       method env-present

       method install DEST

       method install-module DEST ?args?

   CLASS  PRACTCL::SUBPROJECT.PRACTCL
       ancestors: practcl::subproject

       Methods

       method env-bootstrap

       method env-install

       method install DEST

       method install-module DEST ?args?

   CLASS  PRACTCL::SUBPROJECT.BINARY
       ancestors: practcl::subproject

       A subordinate binary package

       Methods

       method clean

       method env-install

       method project-compile-products

       method ComputeInstall

       method go

       method linker-products configdict

       method project-static-packages

       method BuildDir PWD

       method compile

       method Configure

       method install DEST

   CLASS  PRACTCL::SUBPROJECT.TEA
       ancestors: practcl::subproject.binary

       A subordinate TEA based binary package

   CLASS  PRACTCL::SUBPROJECT.LIBRARY
       ancestors: practcl::subproject.binary practcl::library

       A subordinate C library built by this project

       Methods

       method install DEST

   CLASS  PRACTCL::SUBPROJECT.EXTERNAL
       ancestors: practcl::subproject.binary

       A subordinate external C library

       Methods

       method install DEST

   CLASS  PRACTCL::SUBPROJECT.CORE
       ancestors: practcl::subproject.binary

       Methods

       method env-bootstrap

       method env-present

       method env-install

       method go

       method linktype

BUGS, IDEAS, FEEDBACK

       This  document,  and  the package it describes, will undoubtedly contain bugs and other problems.  Please
       report such in the  category  practcl  of  the  Tcllib  Trackers  [http://core.tcl.tk/tcllib/reportlist].
       Please also report any ideas for enhancements you may have for either package and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the output of diff -u.

       Note  further  that  attachments  are strongly preferred over inlined patches. Attachments can be made by
       going to the Edit form of the ticket immediately after its creation, and then using the left-most  button
       in the secondary navigation bar.

KEYWORDS

       practcl

CATEGORY

       TclOO

       Copyright (c) 2016-2018 Sean Woods <yoda@etoyoc.com>