Diff

Differences From Artifact [9735996eb3]:

To Artifact [582b3fb82f]:


1
2




3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
10
11
12
13


+
+
+
+







#! /usr/bin/env bash

cflags=(-DUSE_TCL_STUBS=1 -fPIC)
ldflags=()
libs=(-ltclstub8.6)

inFiles=(
	../../tcllib-fossil/modules/tcllibc.tcl
	../../tcllib-fossil/modules/md4/md4c.tcl
	../../tcllib-fossil/modules/struct/graph_c.tcl
	../../tcllib-fossil/modules/base32/base32_c.tcl
	../../tcllib-fossil/modules/struct/sets_c.tcl
	../../tcllib-fossil/modules/json/jsonc.tcl
47
48
49
50
51
52
53
54

55
56

57
58
59
60
61
62
63
51
52
53
54
55
56
57

58
59

60
61
62
63
64
65
66
67







-
+

-
+







rm -rf "${outDir}"
mkdir "${outDir}"

for input in "${inFiles[@]}"; do
	out="${outDir}/$(basename "${input}" .tcl)"

	./tcc-critcl-to-c.tcl --mode direct "${input}" > "${out}.c"
	cflags=($(awk '/^CLI:/{ gsub(/^CLI:/, ""); print; }' < "${out}.c"))
	input_cflags=($(awk '/^CLI:/{ gsub(/^CLI:/, ""); print; }' < "${out}.c"))

	"${CC:-cc}" -fPIC -Dinline= -o "${out}.o" "${cflags[@]}" -c "${out}.c" || continue
	"${CC:-cc}" "${cflags[@]}" -Dinline= -o "${out}.o" "${input_cflags[@]}" -c "${out}.c" || continue
done

(
	cd "${outDir}" || exit 1

	cat << \_EOF_ > base.c
#include <tcl.h>
97
98
99
100
101
102
103
104

105
106









107



108
109
101
102
103
104
105
106
107

108
109
110
111
112
113
114
115
116
117
118
119

120
121
122
123
124







-
+


+
+
+
+
+
+
+
+
+
-
+
+
+



	Tcl_PkgProvide(interp, "tcllibc", "0");

	return(TCL_OK);
}
_EOF_

	"${CC:-cc}" -fPIC -o base.o -c base.c
	"${CC:-cc}" "${cflags[@]}" -o base.o -c base.c
)

cat << \_EOF_ > "${outDir}/version-script"
{
	global:
		Tcllibc_Init;
	local:
		*;
};
_EOF_

"${CC:-cc}" -fPIC -shared -o tcllibc.so "${outDir}"/*.o
"${CC:-cc}" "${cflags[@]}" "${ldflags[@]}" -Wl,--version-script,"${outDir}/version-script" -shared -o tcllibc.so "${outDir}"/*.o "${libs[@]}"
"${OBJCOPY:-objcopy}" --keep-global-symbol Tcllibc_Init tcllibc.so
"${OBJCOPY:-objcopy}" --discard-all tcllibc.so

exit 0