-
Notifications
You must be signed in to change notification settings - Fork 0
/
kettle.tcl
148 lines (132 loc) · 5.59 KB
/
kettle.tcl
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# -*- tcl -*- Copyright (c) 2012-2024 Andreas Kupries
# # ## ### ##### ######## ############# #####################
## Kettle package
# @@ Meta Begin
# Package kettle 0
# Meta platform tcl
# Meta author {Andreas Kupries}
# Meta summary Build support package.
# Meta description Kettle is a system to make building Tcl
# Meta description packages quick and easy. More importantly,
# Meta description possibly, to make writing the build system
# Meta description for Tcl packages easy.
# Meta description As such kettle is several things:
# Meta description (1) A DSL helping you to write build systems
# Meta description for your packages. (2) A package implementing
# Meta description this DSL. (3) An application which can serve
# Meta description as the interpreter for a build file containing
# Meta description commands in the above DSL.
# Meta subject {build support} critcl teapot {meta data}
# Meta subject doctools diagram
# Meta require {Tcl 8.5 9}
# Meta category Builder/Developer support
# Meta location https://core.tcl.tk/akupries/kettle
# @@ Meta End
# # ## ### ##### ######## ############# #####################
## Requisites
package require Tcl 8.5 9
namespace eval ::kettle {}
# # ## ### ##### ######## ############# #####################
## Export
namespace eval ::kettle {
namespace export {[a-z]*}
namespace ensemble create
}
# # ## ### ##### ######## ############# #####################
## @owns: app.tcl
## @owns: atexit.tcl
## @owns: benchmarks.tcl
## @owns: critcl.tcl
## @owns: depend.tcl
## @owns: doc.tcl
## @owns: figures.tcl
## @owns: gui.tcl
## @owns: invoke.tcl
## @owns: io.tcl
## @owns: lambda.tcl
## @owns: mdref.tcl
## @owns: meta.tcl
## @owns: options.tcl
## @owns: ovalidate.tcl
## @owns: path.tcl
## @owns: recipes.tcl
## @owns: special.tcl
## @owns: standard.tcl
## @owns: status.tcl
## @owns: stream.tcl
## @owns: strutil.tcl
## @owns: tcl.tcl
## @owns: tclapp.tcl
## @owns: testsuite.tcl
## @owns: tool.tcl
## @owns: try.tcl
# # ## ### ##### ######## ############# #####################
## The next two files are not sourced as part of the kettle application.
##
# The first is the main entry point for the 'test' and related
# recipes, i.e. the application running a specific .test file. It is
# used to communicate build configuration data into the test
# environment.
##
# The other provides lots of utilities to make writing tests easier.
## @owns: testmain.tcl
## @owns: testutilities.tcl
## The next three files are not sourced as part of the kettle application.
##
# The first is the main entry point for the 'benchmark' recipe, i.e. the
# application running a specific .bench file. It is used to communicate
# build configuration data into the benchmarking environment.
##
# The second provides lots of utilities to make writing tests easier.
##
# The third is the actual application, snarfed from Tcllib, implementing
# the benchmark commands and running files.
## @owns: benchmain.tcl
## @owns: benchutilities.tcl
## @!owns: libbench.tcl
# # ## ### ##### ######## ############# #####################
::apply {{selfdir} {
# # ## ### ##### ######## ############# ##################### Foundation
source $selfdir/atexit.tcl ; # Application shutdown handlers.
source $selfdir/lambda.tcl ; # Nicer way of writing apply
source $selfdir/try.tcl ; # try/finally coded in Tcl, snarfed from 8.6
source $selfdir/strutil.tcl ; # String utilities.
source $selfdir/io.tcl ; # Message output support.
# # ## ### ##### ######## ############# #####################
source $selfdir/status.tcl ; # General goal status.
source $selfdir/path.tcl ; # General path utilities.
source $selfdir/mdref.tcl ; # Teapot pkg ref utilities.
source $selfdir/meta.tcl ; # Teapot meta data utilities.
source $selfdir/ovalidate.tcl ; # Option Validation sub layer.
source $selfdir/options.tcl ; # Option management.
# # ## ### ##### ######## ############# #####################
source $selfdir/recipes.tcl ; # Recipe management.
source $selfdir/invoke.tcl ; # Goal recursion via sub-processes.
source $selfdir/tool.tcl ; # Manage tool requirements.
source $selfdir/stream.tcl ; # Log streams
# # ## ### ##### ######## ############# #####################
source $selfdir/gui.tcl ; # GUI support.
source $selfdir/special.tcl ; # Special commands.
source $selfdir/app.tcl ; # Application core.
# # ## ### ##### ######## ############# #####################
source $selfdir/standard.tcl ; # Standard recipes.
# # ## ### ##### ######## ############# #####################
# # ## ### ##### ######## ############# ##################### DSL
source $selfdir/depend.tcl ; # dependency setup.
source $selfdir/tclapp.tcl ; # tcl script applications
source $selfdir/figures.tcl ; # figures (diagram)
source $selfdir/testsuite.tcl ; # testsuite (tcltest)
source $selfdir/benchmarks.tcl ; # benchmarks (tclbench)
# # ## ### ##### ######## ############# #####################
source $selfdir/doc.tcl ; # documentation (doctools, gh-pages)
# # ## ### ##### ######## ############# #####################
source $selfdir/tcl.tcl ; # tcl packages
source $selfdir/critcl.tcl ; # critcl v3 packages
# # ## ### ##### ######## ############# #####################
kettle::option::set @kettledir $selfdir
}} [file dirname [file normalize [info script]]]
# # ## ### ##### ######## ############# #####################
## Ready
package provide kettle 1.1
return
# # ## ### ##### ######## ############# #####################