Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Moved all commands to the ::practcl namespace |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | practcl |
Files: | files | file ages | folders |
SHA1: |
b3592dd5a3393b94589446e43ee74cd9 |
User & Date: | hypnotoad 2016-10-18 16:34:51 |
Context
2016-10-20
| ||
18:59 | Updating a few calls to ::debug to point to ::practcl::debug instead check-in: d0a296b832 user: hypnotoad tags: practcl | |
2016-10-18
| ||
16:34 | Moved all commands to the ::practcl namespace check-in: b3592dd5a3 user: hypnotoad tags: practcl | |
2016-10-06
| ||
22:10 | Further efforts to keep DEFS from shell/GCC from being passed through subst check-in: e86ee9359a user: hypnotoad tags: practcl | |
Changes
Changes to practcl.tcl.
1 2 3 4 5 6 7 | ### # Practcl # An object oriented templating system for stamping out Tcl API calls to C ### puts [list LOADED practcl.tcl from [info script]] package require TclOO | > > > > > > > > > > > > > > > > > > > | > > > > > > | | > | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | ### # Practcl # An object oriented templating system for stamping out Tcl API calls to C ### puts [list LOADED practcl.tcl from [info script]] package require TclOO ### # Seek out Tcllib if it's available ### set tcllib_path {} foreach path {.. ../.. ../../..} { foreach path [glob -nocomplain [file join [file normalize $path] tcllib* modules]] { set tclib_path $path lappend ::auto_path $path break } if {$tcllib_path ne {}} break } ### # Build utility functions ### namespace eval ::practcl {} ### # 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 ### if {[info command ::noop] eq {}} { proc ::noop args {} } proc ::practcl::debug args { #puts $args ::practcl::cputs ::DEBUG_INFO $args } ### # Drop in a static copy of Tcl ### proc ::practcl::doexec args { puts [list {*}$args] exec {*}$args >&@ stdout } proc ::practcl::dotclexec args { puts [list [info nameofexecutable] {*}$args] exec [info nameofexecutable] {*}$args >&@ stdout } proc ::practcl::domake {path args} { set PWD [pwd] cd $path puts [list *** $path ***] puts [list make {*}$args] exec make {*}$args >&@ stdout cd $PWD } proc ::practcl::domake.tcl {path args} { set PWD [pwd] cd $path puts [list *** $path ***] puts [list make.tcl {*}$args] exec [info nameofexecutable] make.tcl {*}$args >&@ stdout cd $PWD } proc ::practcl::fossil {path args} { set PWD [pwd] cd $path puts [list {*}$args] exec fossil {*}$args >&@ stdout cd $PWD } proc ::practcl::fossil_status {dir} { if {[info exists ::fosdat($dir)]} { return $::fosdat($dir) } set result { tags experimental version {} } |
︙ | ︙ | |||
79 80 81 82 83 84 85 | dict set result tags $tags break } } set ::fosdat($dir) $result return $result } | < < < < < < < < < < < < < < < < < < | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | dict set result tags $tags break } } set ::fosdat($dir) $result return $result } proc ::practcl::os {} { if {[info exists ::project(TEACUP_OS)] && $::project(TEACUP_OS) ni {"@TEACUP_OS@" {}}} { return $::project(TEACUP_OS) } set info [::practcl::config.tcl $::project(builddir)] if {[dict exists $info TEACUP_OS]} { |
︙ | ︙ | |||
861 862 863 864 865 866 867 | if {$::tcl_platform(platform) eq {unix}} { file attributes $d2 -permissions 0755 } else { file attributes $d2 -readonly 1 } } | | > | > | | 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 | if {$::tcl_platform(platform) eq {unix}} { file attributes $d2 -permissions 0755 } else { file attributes $d2 -readonly 1 } } proc ::practcl::copyDir {d1 d2 {toplevel 1}} { if {$toplevel} { puts [list ::practcl::copyDir $d1 -> $d2] } #file delete -force -- $d2 file mkdir $d2 foreach ftail [glob -directory $d1 -nocomplain -tails *] { set f [file join $d1 $ftail] if {[file isdirectory $f] && [string compare CVS $ftail]} { copyDir $f [file join $d2 $ftail] 0 } elseif {[file isfile $f]} { file copy -force $f [file join $d2 $ftail] } } } ::oo::class create ::practcl::metaclass { |
︙ | ︙ | |||
1714 1715 1716 1717 1718 1719 1720 | --include [::practcl::file_relative $path [file join $TKSRC generic]] \ --include [::practcl::file_relative $path [file join $TKSRC win]] \ --include [::practcl::file_relative $path [file join $TKSRC win rc]] foreach item [${PROJECT} define get resource_include] { lappend cmd --include [::practcl::file_relative $path [file normalize $item]] } lappend cmd $RCSRC | | | 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 | --include [::practcl::file_relative $path [file join $TKSRC generic]] \ --include [::practcl::file_relative $path [file join $TKSRC win]] \ --include [::practcl::file_relative $path [file join $TKSRC win rc]] foreach item [${PROJECT} define get resource_include] { lappend cmd --include [::practcl::file_relative $path [file normalize $item]] } lappend cmd $RCSRC ::practcl::doexec {*}$cmd lappend OBJECTS $RSOBJ set LDFLAGS_CONSOLE {-mconsole -pipe -static-libgcc} set LDFLAGS_WINDOW {-mwindows -pipe -static-libgcc} } else { set LDFLAGS_CONSOLE {} set LDFLAGS_WINDOW {} |
︙ | ︙ | |||
3667 3668 3669 3670 3671 3672 3673 | foreach item [my link list core.library] { set name [$item define get name] set libsrcroot [$item define get srcroot] if {[file exists [file join $libsrcroot library]]} { ::practcl::copyDir [file join $libsrcroot library] [file join $vfspath boot $name] } } | > | | < > | 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 | foreach item [my link list core.library] { set name [$item define get name] set libsrcroot [$item define get srcroot] if {[file exists [file join $libsrcroot library]]} { ::practcl::copyDir [file join $libsrcroot library] [file join $vfspath boot $name] } } # Assume the user will populate the VFS path #if {[my define get installdir] ne {}} { # ::practcl::copyDir [file join [my define get installdir] [string trimleft [my define get prefix] /] lib] [file join $vfspath lib] #} foreach arg $args { ::practcl::copyDir $arg $vfspath } set fout [open [file join $vfspath packages.tcl] w] puts $fout { set ::PKGIDXFILE [info script] |
︙ | ︙ | |||
3808 3809 3810 3811 3812 3813 3814 | # Handle teapot installs ### set pkg [my define get pkg_name [my define get name]] my unpack set DEST [my <project> define get installdir] set prefix [string trimleft [my <project> define get prefix] /] set srcroot [my define get srcroot] | | | 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 | # Handle teapot installs ### set pkg [my define get pkg_name [my define get name]] my unpack set DEST [my <project> define get installdir] set prefix [string trimleft [my <project> define get prefix] /] set srcroot [my define get srcroot] ::practcl::dotclexec [file join $srcroot installer.tcl] \ -pkg-path [file join $DEST $prefix lib $pkg] \ -no-examples -no-html -no-nroff \ -no-wait -no-gui -no-apps } } ### |
︙ | ︙ | |||
3935 3936 3937 3938 3939 3940 3941 | if {[my define get static 1]} { puts "BUILDING Static $name $srcroot" } else { puts "BUILDING Dynamic $name $srcroot" } if {[my define get USEMSVC 0]} { cd $srcroot | | | | | 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 | if {[my define get static 1]} { puts "BUILDING Static $name $srcroot" } else { puts "BUILDING Dynamic $name $srcroot" } if {[my define get USEMSVC 0]} { cd $srcroot ::practcl::doexec nmake -f makefile.vc INSTALLDIR=[my <project> define get installdir] release } else { cd $::CWD set builddir [file normalize [my define get builddir]] file mkdir $builddir if {![file exists [file join $builddir Makefile]]} { my Configure } if {[file exists [file join $builddir make.tcl]]} { ::practcl::domake.tcl $builddir library } else { ::practcl::domake $builddir all } } cd $PWD } method Configure {} { |
︙ | ︙ | |||
4003 4004 4005 4006 4007 4008 4009 | } } my compile if {[my define get USEMSVC 0]} { set srcroot [my define get srcroot] cd $srcroot puts "[self] VFS INSTALL $PKGROOT" | | | | | | 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 | } } my compile if {[my define get USEMSVC 0]} { set srcroot [my define get srcroot] cd $srcroot puts "[self] VFS INSTALL $PKGROOT" ::practcl::doexec nmake -f makefile.vc INSTALLDIR=$PKGROOT install } else { set builddir [my define get builddir] if {[file exists [file join $builddir make.tcl]]} { # Practcl builds can inject right to where we need them puts "[self] VFS INSTALL $PKGROOT (Practcl)" ::practcl::domake.tcl $builddir install-package $PKGROOT } elseif {[my define get broken_destroot 0] == 0} { # Most modern TEA projects understand DESTROOT in the makefile puts "[self] VFS INSTALL $PKGROOT (TEA)" ::practcl::domake $builddir install DESTDIR=$PKGROOT } else { # But some require us to do an install into a fictitious filesystem # and then extract the gooey parts within. # (*cough*) TkImg set PREFIX [my <project> define get prefix] set BROKENROOT [::practcl::msys_to_tclpath [my <project> define get prefix_broken_destdir]] file delete -force $BROKENROOT file mkdir $BROKENROOT ::practcl::domake $builddir $install ::practcl::copyDir $BROKENROOT [file join $PKGROOT [string trimleft $PREFIX /]] file delete -force $BROKENROOT } } cd $PWD } |
︙ | ︙ | |||
4136 4137 4138 4139 4140 4141 4142 | } method linktype {} { return {subordinate core.library} } } | | | 4147 4148 4149 4150 4151 4152 4153 4154 | } method linktype {} { return {subordinate core.library} } } package provide practcl 0.6 |