Check-in [76ee8b8d3d]
Overview
Comment:More work on getting headers correctly made available
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 76ee8b8d3d385044726a8253afdd3e581b5c010d
User & Date: rkeene on 2014-05-18 01:08:10.061
Other Links: manifest | tags
Context
2014-05-18
02:20
Added script to perform known header corrections check-in: 016eb686f9 user: rkeene tags: trunk
01:08
More work on getting headers correctly made available check-in: 76ee8b8d3d user: rkeene tags: trunk
01:07
Updated to define __ANDROID__ on Android/ARM check-in: e3c6c05d95 user: rkeene tags: trunk
Changes
18
19
20
21
22
23
24
25

26
27
28
29
30
31
32
18
19
20
21
22
23
24

25
26
27
28
29
30
31
32







-
+







PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_VERSION = @PACKAGE_VERSION@

TCLCONFIGPATH = @TCLCONFIGPATH@
TCL_PACKAGE_PATH = @TCL_PACKAGE_PATH@
tcllibdir = $(shell if echo "$(libdir)" | grep '^UNSPECIFIED' >/dev/null; then echo $(TCL_PACKAGE_PATH); else echo "$(libdir)"; fi)
PACKAGE_INSTALL_DIR = $(tcllibdir)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
TCC_CONFIGURE_OPTS = --extra-cflags='$(CPPFLAGS) $(CFLAGS) -DCONFIG_TCC_STATIC=1' --with-tcl=$(TCLCONFIGPATH) --sysincludepaths='{B}/include:{B}/include/0:{B}/include/1:{B}/include/2' --libpaths='{B}/lib' @TCC_CONFIGURE_OPTS@
TCC_CONFIGURE_OPTS = --extra-cflags='$(CPPFLAGS) $(CFLAGS) -DCONFIG_TCC_STATIC=1' --with-tcl=$(TCLCONFIGPATH) --sysincludepaths='{B}/include:{B}/include/1:{B}/include/2:{B}/include/3:{B}/include/4:{B}/include/5:{B}/include/6:{B}/include/7:{B}/include/8:{B}/include/9' --libpaths='{B}/lib' @TCC_CONFIGURE_OPTS@
INSTALL_HEADERS = tcl.h assert.h ctype.h errno.h float.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stddef.h stdint.h stdio.h stdlib.h string.h time.h wctype.h
srcdir = @srcdir@
host_os = @host_os@
@SET_MAKE@

all: $(TARGET)

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
69
70
71
72
73
74
75



76
77









78
79
80
81
82
83
84








85
86
87
88
89
90
91







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







	$(INSTALL) -m 0644 $(shell echo $(srcdir)/tcc/include/*) "$(DESTDIR)$(PACKAGE_INSTALL_DIR)/include"
	@if ! echo "_WIN32" | $(CPP) $(CPPFLAGS) - | grep '^_WIN32$$' >/dev/null; then \
		echo cp -r $(srcdir)/tcc/win32/include/* "$(DESTDIR)$(PACKAGE_INSTALL_DIR)/include/"; \
		cp -r $(srcdir)/tcc/win32/include/* "$(DESTDIR)$(PACKAGE_INSTALL_DIR)/include/"; \
		echo cp -r $(srcdir)/tcc/win32/lib/*.def "$(DESTDIR)$(PACKAGE_INSTALL_DIR)/lib/"; \
		cp -r $(srcdir)/tcc/win32/lib/*.def "$(DESTDIR)$(PACKAGE_INSTALL_DIR)/lib/"; \
	fi
	( \
		for file in $(INSTALL_HEADERS); do \
			echo "#include <$${file}>" |  $(CPP) $(CPPFLAGS) $(CFLAGS) -I$(srcdir)/tcc/include -I$(srcdir)/tcc/include - | awk -f $(srcdir)/headers.awk; \
	( for file in $(INSTALL_HEADERS); do echo "#include <$${file}>"; done ) | \
		$(CPP) -v $(CPPFLAGS) $(CFLAGS) -I$(srcdir)/tcc/include -I$(srcdir)/tcc/include - 2>&1 | awk -f $(srcdir)/headers.awk | while read src dst; do \
		done \
	) | while read src dst; do \
		dst="$(DESTDIR)$(PACKAGE_INSTALL_DIR)/include/$$dst"; \
		if [ -e "$${dst}" ]; then continue; fi; \
		dstdir="$$(dirname "$$dst")"; \
		mkdir -p "$$dstdir"; \
		echo cp "$$src" "$$dst"; \
		cp "$$src" "$$dst"; \
	done
			dst="$(DESTDIR)$(PACKAGE_INSTALL_DIR)/include/$$dst"; \
			if [ -e "$${dst}" ]; then continue; fi; \
			dstdir="$$(dirname "$$dst")"; \
			mkdir -p "$$dstdir"; \
			echo cp "$$src" "$$dst"; \
			cp "$$src" "$$dst"; \
		done
	( \
		cd $(DESTDIR)$(PACKAGE_INSTALL_DIR)/include/gcc || exit 0; \
		for file in *; do \
			if [ ! -e "../$${file}" ]; then \
				mv "$${file}" ../; \
			fi; \
		done \
	)

test:
	rm -rf __TMP__
	$(MAKE) install tcllibdir=$(shell pwd)/__TMP__
	-if [ "$(PACKAGE_VERSION)" = '@@VERS@@' ]; then cd __TMP__/* && sed -i 's|@@VERS@@|0.0.0.11|g' tcc4tcl.@SHOBJEXT@ pkgIndex.tcl; fi
	tclsh test
	echo Tests Completed OK > TEST-STATUS
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





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

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









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

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




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


/^# [0-9][0-9]* /{
	file = $3;

	gsub(/^"/, "", file);
	gsub(/"$/, "", file);
/^End of search list/{
	in_searchpath = 0;
}

(in_searchpath == 1){
	searchpath = $0;
	sub(/^  */, "", searchpath);
	sub(/  *$/, "", searchpath);

	while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", file)) {}

	destfile = file;
	searchpaths[searchidx] = searchpath "/";
	searchidx++;
}

	if (!gsub(/^.*\/gcc\/.*\/include\//, "gcc/", destfile)) {
		if (!gsub(/^.*\/include\//, "", destfile)) {
/#include <\.\.\.> search starts here:/{
			if (!gsub(/^.*\/include-fixed\//, "", destfile)) {
				next;
			}
		}
	}
	in_searchpath = 1;
	searchidx = 0;
}

/^# [0-9][0-9]* /{
	file = $3;

	sub(/^"/, "", file);
	sub(/"$/, "", file);

	if (file ~ /</) {
		next;
	}

	if (file !~ /\.h$/) {
		next;
	}

	count = 0;
	origdestfile = destfile;
	while (destfiles[destfile]) {
		if (destfiles[destfile] == file) {
			break;
		}
	destfile = file;
	longestmatchlen = -1;
	for (idx = 0; idx < searchidx; idx++) {
		len = length(searchpaths[idx]);
		if (substr(destfile, 1, len) == searchpaths[idx]) {
			if (len > longestmatchlen) {
				longestmatchidx = idx;
				longestmatchlen = len;
			}
		}
	}

	while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", file)) {}

	if (longestmatchlen > 0) {
		idx = longestmatchidx;

		destfile = substr(destfile, longestmatchlen + 1);

		destfile = count "/" origdestfile;
		count++;
	}

	destfiles[destfile] = file;
	copy[file] = destfile;
		while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", destfile)) {}
	} else {
		while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", destfile)) {}

		if (!sub(/^.*\/include\//, "", destfile)) {
			next;
		}
	}

	copy[file,idx] = destfile;
}

END{
	for (key in copy) {
		split(key, parts, SUBSEP);

		src = parts[1];
		idx = strtonum(parts[2]);
		print key, copy[key];
		dest = copy[key];

		destcopy[dest,idx] = src;
		destcopyfiles[dest] = 1;
	}

	for (destfile in destcopyfiles) {
		outidx = 0;
		for (idx = 0; idx < searchidx; idx++) {
			if (destcopy[destfile,idx]) {
				srcfile = destcopy[destfile,idx];
				newcopy[srcfile,outidx] = destfile;
				outidx++;
			}
		}

	}

	for (key in newcopy) {
		split(key, parts, SUBSEP);

		if (parts[2] == "0") {
			parts[2] = "";
		} else {
			parts[2] = parts[2] "/";
		}

		print parts[1], parts[2]  newcopy[key];
	}
}