Documentation Source Text

Changes On Branch experimental
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch experimental Excluding Merge-Ins

This is equivalent to a diff from e4c2e46a8c to 8d6ba1bfab

2016-08-29
20:22
Use the same "tclsh.docsrc" binary for everything. (check-in: ddb4bf4fcf user: drh tags: trunk)
20:18
Add the $(TCLINC) to the arguments to build tclsh.docsrc (Closed-Leaf check-in: 8d6ba1bfab user: drh tags: experimental)
20:00
Fix a problem in the previous commit. (check-in: f1a680e527 user: dan tags: experimental)
19:59
Run all make scripts using the same tclsh binary - "tclsh.docsrc". (check-in: 28358c49d7 user: dan tags: experimental)
18:40
New improvements to the opcode documentation. (check-in: dd15111c6a user: drh tags: trunk)
18:38
Merge "experimental" with this branch. Adds more links to the front page, fts5 search, show/hide links for tables of contents and some other things. (check-in: e4c2e46a8c user: dan tags: trunk)
16:16
Typos in the opcodes.html document. (check-in: 4ab90dc6cf user: drh tags: trunk)
15:41
Change the "show table-of-contents" setting so that it is off by default. Setting is still persistent. (Closed-Leaf check-in: a0e88fec0c user: dan tags: experimental)

Changes to main.mk.

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
149
150
151
152
153
154

155
156
157


158
159
160


161
162
163
164
165
166
167
168

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
149
150

151
152


153
154
155


156
157
158
159
160
161
162
163
164

165







+
+















-
-
-
-
-
-
-
+
+














-
+





-
+















-
-
+
+











-
-
-
-
-
+
+
+
+
+

-
-
-
-
-
+
+
+
+
+


-
+






-
+

-
-
-
-
+
+
+
+

-
+



-
-
-
+
+
+






-
+













-
+

-
-
+
+

-
-
+
+







-
+
#
# CC               A C-compiler and arguments for building utility programs
#
# Once the macros above are defined, the rest of this make script will
# build the SQLite library and testing tools.
################################################################################

TCLSH = tclsh.docsrc

default:	
	@echo 'make base;       # Build base documents'
	@echo 'make evidence;   # Gather evidence marks'
	@echo 'make matrix;     # Build the traceability matrix'
	@echo 'make all;        # Do all of the above'
	@echo 'make spell;      # Spell check generated docs'
	@echo 'make fast;       # Build documentation only - no requirements'
	@echo 'make schema;     # Run once to initialize the build process'

all:	base evidence format_evidence matrix doc

private:	base evidence private_evidence matrix doc

fast:	base doc

tclsh:	$(TCLSQLITE3C)
	$(CC) -g -o tclsh -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS5 -DTCLSH=1 -DSQLITE_TCLMD5 $(TCLINC) $(TCLSQLITE3C) $(TCLFLAGS)



sqlite3.h:	tclsh $(SRC)/src/sqlite.h.in $(SRC)/manifest.uuid $(SRC)/VERSION
	./tclsh $(SRC)/tool/mksqlite3h.tcl $(SRC) | \
sqlite3.h: $(TCLSH) $(SRC)/src/sqlite.h.in $(SRC)/manifest.uuid $(SRC)/VERSION
	./$(TCLSH) $(SRC)/tool/mksqlite3h.tcl $(SRC) | \
	sed 's/^SQLITE_API //' >sqlite3.h

# Generate the directory into which generated documentation files will
# be written.
#
docdir:
	mkdir -p doc doc/c3ref doc/matrix doc/matrix/c3ref doc/matrix/syntax

# This rule generates all documention files from their sources.  The
# special markup on HTML files used to identify testable statements and
# requirements are retained in the HTML and so the HTML generated by
# this rule is not suitable for publication.  This is the first step
# only.
#
base:	tclsh sqlite3.h docdir always parsehtml.so
base:	$(TCLSH) sqlite3.h docdir always 
	rm -rf doc/images
	cp -r $(DOC)/images doc
	mkdir doc/images/syntax
	cp $(DOC)/art/syntax/*.gif doc/images/syntax
	cp $(DOC)/rawpages/* doc
	./tclsh $(DOC)/wrap.tcl $(DOC) $(SRC) doc $(DOC)/pages/*.in
	./$(TCLSH) $(DOC)/wrap.tcl $(DOC) $(SRC) doc $(DOC)/pages/*.in
	cp doc/fileformat2.html doc/fileformat.html

# Strip the special markup in HTML files that identifies testable statements
# and requirements.
#
doc:	always $(DOC)/remove_carets.sh
	sh $(DOC)/remove_carets.sh doc

# Spell check generated docs.
#
spell: $(DOC)/spell_chk.sh $(DOC)/custom.txt
	sh $(DOC)/spell_chk.sh doc '*.html' $(DOC)/custom.txt

# Construct the database schema.
#
schema:	tclsh
	./tclsh $(DOC)/schema.tcl
schema:	$(TCLSH)
	./$(TCLSH) $(DOC)/schema.tcl

# The following rule scans sqlite3.c source text, the text of the TCL
# test cases, and (optionally) the TH3 test case sources looking for
# comments that identify assertions and test cases that provide evidence
# that SQLite behaves as it says it does.  See the comments in 
# scan_test_cases.tcl for additional information.
#
# The output file evidence.txt is used by requirements coverage analysis.
#
SCANNER = $(DOC)/scan_test_cases.tcl

evidence:	tclsh
	./tclsh $(SCANNER) -reset src $(SRC)/src/*.[chy]
	./tclsh $(SCANNER) src $(SRC)/ext/fts3/*.[ch]
	./tclsh $(SCANNER) src $(SRC)/ext/rtree/*.[ch]
	./tclsh $(SCANNER) tcl $(SRC)/test/*.test
evidence:	$(TCLSH)
	./$(TCLSH) $(SCANNER) -reset src $(SRC)/src/*.[chy]
	./$(TCLSH) $(SCANNER) src $(SRC)/ext/fts3/*.[ch]
	./$(TCLSH) $(SCANNER) src $(SRC)/ext/rtree/*.[ch]
	./$(TCLSH) $(SCANNER) tcl $(SRC)/test/*.test
	if test '' != '$(TH3)'; then \
	  ./tclsh $(SCANNER) th3 $(TH3)/mkth3.tcl; \
	  ./tclsh $(SCANNER) th3 $(TH3)/base/*.c; \
	  ./tclsh $(SCANNER) th3/req1 $(TH3)/req1/*.test; \
	  ./tclsh $(SCANNER) th3/cov1 $(TH3)/cov1/*.test; \
	  ./tclsh $(SCANNER) th3/stress $(TH3)/stress/*.test; \
	  ./$(TCLSH) $(SCANNER) th3 $(TH3)/mkth3.tcl; \
	  ./$(TCLSH) $(SCANNER) th3 $(TH3)/base/*.c; \
	  ./$(TCLSH) $(SCANNER) th3/req1 $(TH3)/req1/*.test; \
	  ./$(TCLSH) $(SCANNER) th3/cov1 $(TH3)/cov1/*.test; \
	  ./$(TCLSH) $(SCANNER) th3/stress $(TH3)/stress/*.test; \
	fi
	if test '' != '$(SLT)'; then \
	  ./tclsh $(SCANNER) slt $(SLT)/test/evidence/*.test; \
	  ./$(TCLSH) $(SCANNER) slt $(SLT)/test/evidence/*.test; \
	fi

# Copy and HTMLize evidence files
#
FMT = $(DOC)/format_evidence.tcl

format_evidence: tclsh
format_evidence: $(TCLSH)
	rm -fr doc/matrix/ev/*
	./tclsh $(FMT) src doc/matrix $(SRC)/src/*.[chy]
	./tclsh $(FMT) src doc/matrix $(SRC)/ext/fts3/*.[ch]
	./tclsh $(FMT) src doc/matrix $(SRC)/ext/rtree/*.[ch]
	./tclsh $(FMT) tcl doc/matrix $(SRC)/test/*.test
	./$(TCLSH) $(FMT) src doc/matrix $(SRC)/src/*.[chy]
	./$(TCLSH) $(FMT) src doc/matrix $(SRC)/ext/fts3/*.[ch]
	./$(TCLSH) $(FMT) src doc/matrix $(SRC)/ext/rtree/*.[ch]
	./$(TCLSH) $(FMT) tcl doc/matrix $(SRC)/test/*.test
	if test '' != '$(SLT)'; then \
	  ./tclsh $(FMT) slt doc/matrix $(SLT)/test/evidence/*.test; \
	  ./$(TCLSH) $(FMT) slt doc/matrix $(SLT)/test/evidence/*.test; \
	fi

private_evidence: format_evidence
	./tclsh $(FMT) th3 doc/matrix $(TH3)/mkth3.tcl
	./tclsh $(FMT) th3/req1 doc/matrix $(TH3)/req1/*.test
	./tclsh $(FMT) th3/cov1 doc/matrix $(TH3)/cov1/*.test
	./$(TCLSH) $(FMT) th3 doc/matrix $(TH3)/mkth3.tcl
	./$(TCLSH) $(FMT) th3/req1 doc/matrix $(TH3)/req1/*.test
	./$(TCLSH) $(FMT) th3/cov1 doc/matrix $(TH3)/cov1/*.test

# Generate the traceability matrix
#
matrix:	
	rm -rf doc/matrix/images
	cp -r doc/images doc/matrix
	./tclsh $(DOC)/matrix.tcl
	./$(TCLSH) $(DOC)/matrix.tcl


#-------------------------------------------------------------------------

# Source files for the [tclsqlite3.search] executable. 
#
SSRC = $(DOC)/search/searchc.c \
	    $(DOC)/search/parsehtml.c \
	    $(DOC)/search/fts5ext.c \
	    $(TCLSQLITE3C)

# Flags to build [tclsqlite3.search] with.
#
SFLAGS = -DSQLITE_THREADSAFE=0 -DSQLITE_ENABLE_FTS5
SFLAGS = $(TCLINC) -DSQLITE_THREADSAFE=0 -DSQLITE_ENABLE_FTS5 -DSQLITE_TCLMD5 -DTCLSH -Dmain=xmain

tclsqlite3.search: $(SSRC)
	$(CC) -static -O2 -o $@ -I. $(SFLAGS) $(SSRC) $(STATICTCLFLAGS)
$(TCLSH): $(SSRC)
	$(CC) -O2 -o $@ -I. $(SFLAGS) $(SSRC) $(TCLFLAGS)

searchdb: tclsqlite3.search
	./tclsqlite3.search $(DOC)/search/buildsearchdb.tcl
searchdb: $(TCLSH)
	./$(TCLSH) $(DOC)/search/buildsearchdb.tcl
	cp $(DOC)/document_header.tcl doc/document_header.tcl
	cp $(DOC)/search/search.tcl doc/search
	chmod +x doc/search

always:	

clean:	
	rm -rf tclsh doc sqlite3.h
	rm -rf $(TCLSH) doc sqlite3.h

Changes to search/search.tcl.

1

2
3
4
5
6
7
8

1
2
3
4
5
6
7
8
-
+







#!/usr/bin/tclsqlite3.search
#!/usr/bin/tclsh.docsrc

source [file dirname [info script]]/document_header.tcl

# Decode an HTTP %-encoded string
#
proc percent_decode {str} {
    # rewrite "+" back to space

Changes to search/searchc.c.

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
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








+
+
+
+











+
+
+
+
+



+
+
+
+








#include <sqlite3.h>
#include <tcl.h>

int Sqlite3_Init(Tcl_Interp*);
int Parsehtml_Init(Tcl_Interp*);
int Fts5ext_Init(Tcl_Interp*);

#ifdef SQLITE_TCLMD5
int Md5_Init(Tcl_Interp*);
#endif

static int AppInit(Tcl_Interp *interp) {
  int rc;
  rc = Sqlite3_Init(interp);
  if( rc!=TCL_OK ) return rc;

  rc = Parsehtml_Init(interp);
  if( rc!=TCL_OK ) return rc;

  rc = Fts5ext_Init(interp);
  if( rc!=TCL_OK ) return rc;

#ifdef SQLITE_TCLMD5
  rc = Md5_Init(interp);
  if( rc!=TCL_OK ) return rc;
#endif

  return TCL_OK;
}

#ifdef main
# undef main
#endif

int main(int argc, char *argv[]) {
  Tcl_Main(argc, argv, AppInit);
  return 0;
}