Index: Makefile.in ================================================================== --- Makefile.in +++ Makefile.in @@ -20,11 +20,11 @@ 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@ @@ -71,30 +71,19 @@ 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; \ - 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 - ( \ - cd $(DESTDIR)$(PACKAGE_INSTALL_DIR)/include/gcc || exit 0; \ - for file in *; do \ - if [ ! -e "../$${file}" ]; then \ - mv "$${file}" ../; \ - fi; \ - done \ - ) + ( 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 \ + 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 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 Index: headers.awk ================================================================== --- headers.awk +++ headers.awk @@ -1,45 +1,99 @@ +/^End of search list/{ + in_searchpath = 0; +} + +(in_searchpath == 1){ + searchpath = $0; + sub(/^ */, "", searchpath); + sub(/ *$/, "", searchpath); + + searchpaths[searchidx] = searchpath "/"; + searchidx++; +} + +/#include <\.\.\.> search starts here:/{ + in_searchpath = 1; + searchidx = 0; +} + /^# [0-9][0-9]* /{ file = $3; - gsub(/^"/, "", file); - gsub(/"$/, "", file); - - while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", file)) {} - - destfile = file; - if (!gsub(/^.*\/gcc\/.*\/include\//, "gcc/", destfile)) { - if (!gsub(/^.*\/include\//, "", destfile)) { - if (!gsub(/^.*\/include-fixed\//, "", destfile)) { - next; - } - } - } + sub(/^"/, "", file); + sub(/"$/, "", file); if (file ~ / longestmatchlen) { + longestmatchidx = idx; + longestmatchlen = len; + } + } + } + + while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", file)) {} + + if (longestmatchlen > 0) { + idx = longestmatchidx; + + destfile = substr(destfile, longestmatchlen + 1); + + while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", destfile)) {} + } else { + while(sub(/\/\/*[^\/]*\/\.\.\/\/*/, "/", destfile)) {} + + if (!sub(/^.*\/include\//, "", destfile)) { + next; + } } - destfiles[destfile] = file; - copy[file] = destfile; + copy[file,idx] = destfile; } END{ for (key in copy) { - print key, copy[key]; + split(key, parts, SUBSEP); + + src = parts[1]; + idx = strtonum(parts[2]); + 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]; } }