Check-in [ad3a66af0b]
Overview
Comment:Merged in branch "merge-kitdll-kitsh-common" to trunk
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:ad3a66af0bd5954c293be8a741dbb8710d70513c
User & Date: rkeene on 2011-05-26 16:28:43
Other Links: manifest | tags
Context
2011-05-28
05:18
Updated to give second build try the same DLL name as the first since the name gets built-in to the library check-in: a407ca2616 user: rkeene tags: trunk
2011-05-26
16:28
Merged in branch "merge-kitdll-kitsh-common" to trunk check-in: ad3a66af0b user: rkeene tags: trunk
16:05
Updated KitDLL to link without weaking symbols, then weaken the symbols and try to link again Closed-Leaf check-in: 6dba8b40f1 user: rkeene tags: merge-kitdll-kitsh-common
2011-05-21
16:04
Updated to only look at the trunk for the change UUID check-in: fb120151ec user: rkeene tags: trunk
Changes

Modified README from [6e46265709] to [f55796d36b].

    57     57   		a. KITCREATOR_PKGS='tk itcl'
    58     58   		b. export KITCREATOR_PKGS
    59     59   		c. ./kitcreator
    60     60   
    61     61   	9. Create a Tclkit with Metakit4 support, but using Zip for storage:
    62     62   		a. $ ./kitcreator --enable-kit-storage=zip
    63     63   
    64         -	10. Create a KitDLL without Metakit support (will not create a Tclkit
           64  +	10. Create a Tclkit with Metakit4 support, but using C-VFS for storage
           65  +		a. $ ./kitcreator --enable-kit-storage=cvfs
           66  +
           67  +	11. Create a KitDLL without Metakit support (will not create a Tclkit
    65     68   	    binary, just the library):
    66     69   		a. $ KITCREATOR_PKGS='tk itcl kitdll'
    67     70   		b. $ export KITCREATOR_PKGS
    68     71   		c. $ ./kitcreator
    69     72   
    70     73   Environment variables:
    71     74   	1. MAKE

Modified build/pre.sh from [6536148eb0] to [2ce5e55131].

    11     11   	rm -rf autom4te.cache
    12     12   	rm -f *~
    13     13   
    14     14   	./configure || exit 1
    15     15   	make boot.tcl.h
    16     16   	make zipvfs.tcl.h
    17     17   
    18         -	make distclean
    19         -) || exit 1
    20         -
    21         -KITDLLROOTDIR="$(ls -1d kitdll/buildsrc/kitdll-*/)"
    22         -export KITDLLROOTDIR
    23         -(
    24         -	cd "${KITDLLROOTDIR}" || exit 1
    25         -
    26         -	autoconf; autoheader
    27         -	rm -rf autom4te.cache
    28         -	rm -f *~
    29         -
    30         -	./configure || exit 1
    31         -	make vfs_kitdll.tcl.h || exit 1
    32         -
    33     18   	make distclean
    34     19   ) || exit 1
    35     20   
    36     21   rm -f tcl/patchscripts/dietlibc.sh
    37     22   
    38     23   find . -name '.*.sw?' -type f | xargs rm -f

Modified build/test/test from [5b64a8c9ab] to [38851b5a2a].

   259    259   				(
   260    260   					echo ""
   261    261   					echo ""
   262    262   					echo ""
   263    263   					echo " *** Building KitDLL test driver (tclsh)"
   264    264   					echo ""
   265    265   
   266         -					cd kitdll/build/kitdll-*/ || exit 1
          266  +					cd kitsh/build/kitsh-*/ || exit 1
   267    267   					make tclsh
   268    268   					cp tclsh ../../../
   269    269   				) >> "${buildlog}" 2>&1
   270    270   			fi
   271    271   
   272    272   			# Perform wildcard expansion
   273    273   			createdkit="$(ls -f1 ${createdkit} 2>/dev/null | head -n 1)"

Modified kitcreator from [fb76c24536] to [bed9e43849].

    18     18   if [ "$1" = "distclean" ]; then
    19     19   	shift
    20     20   
    21     21   	mode="distclean"
    22     22   fi
    23     23   
    24     24   # Define the list of all packages, for cleaning purposes
    25         -KITCREATOR_ALLPKGS="kitsh tcl tclvfs zlib tk itcl mk4tcl thread kitdll"
           25  +KITCREATOR_ALLPKGS="kitsh tcl tclvfs zlib tk itcl mk4tcl thread"
    26     26   for pkg in ${KITCREATOR_ALLPKGS}; do
    27     27   	rm -f "${pkg}/build.log"
    28     28   	rm -rf "${pkg}/out" "${pkg}/inst" "${pkg}/build"
    29     29   
    30     30   	rm -rf "${pkg}/src"/tmp-*
    31     31   
    32     32   	if [ "${mode}" = "distclean" ]; then
................................................................................
    60     60   
    61     61   # Fix up package list
    62     62   ## If building KitDLL, define it as our target
    63     63   if echo " ${KITCREATOR_PKGS} " | grep ' kitdll ' >/dev/null 2>/dev/null; then
    64     64   	KITCREATOR_PKGS="$(echo " ${KITCREATOR_PKGS} " | sed 's@ kitdll @ @g;s@^  *@@;s@  *$@@;s@   *@ @g')"
    65     65   	KITTARGET="kitdll"
    66     66   fi
           67  +
           68  +# If the user manually requested "--enable-kitdll", make it so
           69  +if echo "x $@ " | grep ' [-][-]enable-kitdll ' >/dev/null 2>/dev/null; then
           70  +	KITTARGET="kitdll"
           71  +fi
    67     72   
    68     73   ## If building KitDLL and Tk, must do Tk statically
    69     74   ### (Well, we don't HAVE to, but it would defeat much of the purpose)
    70     75   if [ "${KITTARGET}" = "kitdll" ]; then
    71     76   	if echo " ${KITCREATOR_PKGS} " | grep ' tk ' >/dev/null 2>/dev/null; then
    72     77   		if [ "${STATICTK}" != "1" -a "${STATICTK}" != "-1" ]; then
    73     78   			echo 'Warning: Linking Tk statically because you are building KitDLL' 2>&1
................................................................................
    98    103   else
    99    104   	KITCREATOR_RC="$(echo "$(pwd)/kitsh/buildsrc"/kitsh-*/kit.rc)"
   100    105   fi
   101    106   export KITCREATOR_ICON KITCREATOR_RC
   102    107   
   103    108   failedpkgs=""
   104    109   buildfailed="0"
   105         -for pkg in tcl tclvfs zlib ${KITCREATOR_PKGS} "${KITTARGET}"; do
          110  +for pkg in tcl tclvfs zlib ${KITCREATOR_PKGS} kitsh; do
   106    111   	echo -n "Building ${pkg} ..."
   107    112   
   108    113   	failed="0"
   109    114   	(
   110    115   		cd "${pkg}" >/dev/null 2>/dev/null || exit 1
   111    116   
   112    117   		./build.sh > build.log 2>&1 || exit 1
................................................................................
   135    140   	echo "Failed to build:${failedpkgs}"
   136    141   fi
   137    142   
   138    143   if [ "${buildfailed}" != "0" ]; then
   139    144   	echo 'WARNING: Build is likely incomplete or failed.' >&2
   140    145   fi
   141    146   
   142         -cp 'kitdll/build'/kitdll-*/libtclkit* . >/dev/null 2>/dev/null
          147  +cp 'kitsh/build'/kitsh-*/libtclkit* . >/dev/null 2>/dev/null
   143    148   cp 'kitsh/build'/kitsh-*/kit "tclkit-${TCLVERS}" >/dev/null 2>/dev/null
   144    149   
   145    150   exit "${buildfailed}"

Deleted kitdll/build.sh version [4e8a270142].

     1         -#! /bin/bash
     2         -
     3         -if [ ! -f 'build.sh' ]; then
     4         -	echo 'ERROR: This script must be run from the directory it is in' >&2
     5         -
     6         -	exit 1
     7         -fi
     8         -if [ -z "${TCLVERS}" ]; then
     9         -	echo 'ERROR: The TCLVERS environment variable is not set' >&2
    10         -
    11         -	exit 1
    12         -fi
    13         -
    14         -KITDLLVERS="0.0"
    15         -BUILDDIR="$(pwd)/build/kitdll-${KITDLLVERS}"
    16         -OUTDIR="$(pwd)/out"
    17         -INSTDIR="$(pwd)/inst"
    18         -OTHERPKGSDIR="$(pwd)/../"
    19         -export KITDLLVERS BUILDDIR OUTDIR INSTDIR OTHERPKGSDIR
    20         -
    21         -rm -rf 'build' 'out' 'inst'
    22         -mkdir 'out' 'inst' || exit 1
    23         -
    24         -(
    25         -	cp -r 'buildsrc' 'build'
    26         -	cd "${BUILDDIR}" || exit 1
    27         -
    28         -	# Fix up archives that Tcl gets wrong
    29         -	for archive in ../../../tcl/inst/lib/dde*/tcldde*.a ../../../tcl/inst/lib/reg*/tclreg*.a; do
    30         -		if [ ! -f "${archive}" ]; then
    31         -			continue
    32         -		fi
    33         -
    34         -		rm -rf __TEMP__
    35         -		(
    36         -			mkdir __TEMP__ || exit 1
    37         -			cd __TEMP__
    38         -
    39         -			## Patch archive name
    40         -			archive="../${archive}"
    41         -
    42         -			"${AR:-ar}" x "${archive}" || exit 1
    43         -
    44         -			rm -f "${archive}"
    45         -
    46         -			"${AR:-ar}" cr "${archive}" *.o || exit 1
    47         -			"${RANLIB:-ranlib}" "${archive}" || true
    48         -		)
    49         -	done
    50         -
    51         -	# Determine how we invoke a Tcl interpreter
    52         -	for testsh in "${TCLSH_NATIVE:-false}" tclsh tclsh8.4 tclsh8.5 tclsh8.6 "${TCLKIT:-tclkit}"; do
    53         -		if echo 'exit 0' | "${testsh}" >/dev/null 2>/dev/null; then
    54         -			TCLSH_NATIVE="${testsh}"
    55         -
    56         -			break
    57         -		fi
    58         -	done
    59         -
    60         -	# Cleanup, just incase the incoming directory was not pre-cleaned
    61         -	${MAKE:-make} distclean >/dev/null 2>/dev/null
    62         -	rm -rf "starpack.vfs"
    63         -
    64         -	# Create VFS directory
    65         -	mkdir "starpack.vfs"
    66         -	mkdir "starpack.vfs/lib"
    67         -
    68         -	## Copy in required built directories
    69         -	cp -r "${OTHERPKGSDIR}"/*/out/* 'starpack.vfs/'
    70         -
    71         -	## Rename the "vfs" package directory to what "boot.tcl" expects
    72         -	mv 'starpack.vfs/lib'/vfs* 'starpack.vfs/lib/vfs'
    73         -
    74         -	## Install "boot.tcl"
    75         -	cp 'boot.tcl' 'starpack.vfs/'
    76         -
    77         -	# Include extra objects as required
    78         -	## Initialize list of extra objects
    79         -	EXTRA_OBJS=""
    80         -
    81         -	## Figure out if zlib compiled (if not, the system zlib will be used and we
    82         -	## will need to have that present)
    83         -	ZLIBDIR="$(cd "${OTHERPKGSDIR}/zlib/inst" 2>/dev/null && pwd)"
    84         -	export ZLIBDIR
    85         -	if [ -n "${ZLIBDIR}" -a -f "${ZLIBDIR}/lib/libz.a" ]; then
    86         -		EXTRA_OBJS="${EXTRA_OBJS} ${ZLIBDIR}/lib/libz.a"
    87         -
    88         -		### Add lib directory for zlib
    89         -		LDFLAGS="${LDFLAGS} -L${ZLIBDIR}/lib"
    90         -		export LDFLAGS
    91         -
    92         -		### Add include directory for zlib
    93         -		CFLAGS="${CFLAGS} -I${ZLIBDIR}/include"
    94         -		CPPFLAGS="${CPPFLAGS} -I${ZLIBDIR}/include"
    95         -		export CFLAGS CPPFLAGS
    96         -	fi
    97         -
    98         -	## Tk Resources (needed for Win32 support)
    99         -	TKDIR="$(cd "${OTHERPKGSDIR}/tk/inst" && pwd)"
   100         -	TKRSRC="${TKDIR}/lib/tkbase.res.o"
   101         -	if [ -n "${TKDIR}" -a -f "${TKRSRC}" ]; then
   102         -		EXTRA_OBJS="${EXTRA_OBJS} ${TKRSRC}"
   103         -	fi
   104         -
   105         -	## Export to the environment, to be picked up by the "configure" script
   106         -	export EXTRA_OBJS
   107         -
   108         -	# Build KitDLL
   109         -	echo "Running: ./configure --with-tcl=\"${TCLCONFIGDIR}\" ${CONFIGUREEXTRA}"
   110         -	./configure --with-tcl="${TCLCONFIGDIR}" ${CONFIGUREEXTRA}
   111         -
   112         -	echo "Running: ${MAKE:-make}"
   113         -	${MAKE:-make} TCLSH_NATIVE="${TCLSH_NATIVE}" || exit 1
   114         -
   115         -	# Strip the KitDLL of debugging symbols, if possible
   116         -	"${STRIP:-strip}" -g libtclkit* >/dev/null 2>/dev/null
   117         -
   118         -	# Fix up Win32 DLL names
   119         -	## .DLL.A -> .LIB
   120         -	for file in libtclkit*.dll.a; do
   121         -		if [ ! -f "${file}" ]; then
   122         -			continue
   123         -		fi
   124         -
   125         -		newfile="$(basename "${file}" .dll.a).lib"
   126         -		mv "${file}" "${newfile}"
   127         -	done
   128         -
   129         -	## .DLL.DEF -> .DEF
   130         -	for file in libtclkit*.dll.def; do
   131         -		if [ ! -f "${file}" ]; then
   132         -			continue
   133         -		fi
   134         -
   135         -		newfile="$(basename "${file}" .dll.def).def"
   136         -		mv "${file}" "${newfile}"
   137         -	done
   138         -
   139         -	exit 0
   140         -) || exit 1
   141         -
   142         -exit 0

Deleted kitdll/buildsrc/kitdll-0.0/aclocal.m4 version [0c2240a08b].

     1         -dnl Usage:
     2         -dnl    DC_TEST_SHOBJFLAGS(shobjflags, shobjldflags, action-if-not-found)
     3         -dnl
     4         -AC_DEFUN(DC_TEST_SHOBJFLAGS, [
     5         -  AC_SUBST(SHOBJFLAGS)
     6         -  AC_SUBST(SHOBJLDFLAGS)
     7         -
     8         -  OLD_LDFLAGS="$LDFLAGS"
     9         -  SHOBJFLAGS=""
    10         -
    11         -  LDFLAGS="$OLD_LDFLAGS $1 $2"
    12         -
    13         -  AC_TRY_LINK([#include <stdio.h>
    14         -int unrestst(void);], [ printf("okay\n"); unrestst(); return(0); ], [ SHOBJFLAGS="$1"; SHOBJLDFLAGS="$2" ], [
    15         -  LDFLAGS="$OLD_LDFLAGS"
    16         -  $3
    17         -])
    18         -
    19         -  LDFLAGS="$OLD_LDFLAGS"
    20         -])
    21         -
    22         -AC_DEFUN(DC_GET_SHOBJFLAGS, [
    23         -  AC_SUBST(SHOBJFLAGS)
    24         -  AC_SUBST(SHOBJLDFLAGS)
    25         -
    26         -  AC_MSG_CHECKING(how to create shared objects)
    27         -
    28         -  if test -z "$SHOBJFLAGS" -a -z "$SHOBJLDFLAGS"; then
    29         -    DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic], [
    30         -      DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared], [
    31         -        DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -mimpure-text], [
    32         -          DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -mimpure-text], [
    33         -            DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -Wl,-G,-z,textoff], [
    34         -              DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -Wl,-G,-z,textoff], [
    35         -                DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
    36         -                  DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
    37         -                    DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-Wl,-dynamiclib -Wl,-flat_namespace -Wl,-undefined,suppress -Wl,-bind_at_load], [
    38         -                      DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress], [
    39         -                        DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib], [
    40         -                          AC_MSG_RESULT(cant)
    41         -                          AC_MSG_ERROR([We are unable to make shared objects.])
    42         -                        ])
    43         -                      ])
    44         -                    ])
    45         -                  ])
    46         -                ])
    47         -              ])
    48         -            ])
    49         -          ])
    50         -        ])
    51         -      ])
    52         -    ])
    53         -  fi
    54         -
    55         -  AC_MSG_RESULT($SHOBJLDFLAGS $SHOBJFLAGS)
    56         -])
    57         -
    58         -AC_DEFUN(DC_CHK_OS_INFO, [
    59         -	AC_CANONICAL_HOST
    60         -	AC_SUBST(SHOBJEXT)
    61         -	AC_SUBST(AREXT)
    62         -        AC_SUBST(SHOBJFLAGS)
    63         -        AC_SUBST(SHOBJLDFLAGS)
    64         -
    65         -        AC_MSG_CHECKING(host operating system)
    66         -        AC_MSG_RESULT($host_os)
    67         -
    68         -	SHOBJEXT="so"
    69         -	AREXT="a"
    70         -
    71         -        case $host_os in
    72         -                darwin*)
    73         -			SHOBJEXT="dylib"
    74         -                        ;;
    75         -		hpux*)
    76         -			SHOBJEXT="sl"
    77         -			;;
    78         -		mingw*)
    79         -			SHOBJEXT="dll"
    80         -			SHOBJFLAGS="-mno-cygwin -mms-bitfields -DPIC"
    81         -			SHOBJLDFLAGS='-shared -Wl,--dll -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a -Wl,--export-all-symbols -Wl,--add-stdcall-alias'
    82         -			;;
    83         -	esac
    84         -])
    85         -
    86         -AC_DEFUN(DC_DO_TCL, [
    87         -	AC_MSG_CHECKING([path to tcl])
    88         -	AC_ARG_WITH(tcl, AC_HELP_STRING([--with-tcl], [directory containing tcl configuration (tclConfig.sh)]), [], [
    89         -		with_tcl="auto"
    90         -	])
    91         -
    92         -	if test "${with_tcl}" = "auto"; then
    93         -		for dir in `echo "${PATH}" | sed 's@:@ @g'`; do
    94         -			if test -f "${dir}/tclConfig.sh"; then
    95         -				tclconfigshdir="${dir}"
    96         -				tclconfigsh="${tclconfigshdir}/tclConfig.sh"
    97         -				break
    98         -			fi
    99         -			if test -f "${dir}/../lib/tclConfig.sh"; then
   100         -				tclconfigshdir="${dir}/../lib"
   101         -				tclconfigsh="${tclconfigshdir}/tclConfig.sh"
   102         -				break
   103         -			fi
   104         -			if test -f "${dir}/../lib64/tclConfig.sh"; then
   105         -				tclconfigshdir="${dir}/../lib64"
   106         -				tclconfigsh="${tclconfigshdir}/tclConfig.sh"
   107         -				break
   108         -			fi
   109         -		done
   110         -
   111         -		if test -z "${tclconfigsh}"; then
   112         -			AC_MSG_ERROR([Unable to find tclConfig.sh])
   113         -		fi
   114         -	else
   115         -		tclconfigshdir="${with_tcl}"
   116         -		tclconfigsh="${tclconfigshdir}/tclConfig.sh"
   117         -	fi
   118         -
   119         -	if test -f "${tclconfigsh}"; then
   120         -		. "${tclconfigsh}"
   121         -
   122         -		CFLAGS="${CFLAGS} ${TCL_INCLUDE_SPEC} -I${TCL_SRC_DIR}/generic -I${tclconfigshdir}"
   123         -		CPPFLAGS="${CPPFLAGS} ${TCL_INCLUDE_SPEC} -I${TCL_SRC_DIR}/generic -I${tclconfigshdir}"
   124         -		LIBS="${LIBS} ${TCL_LIBS}"
   125         -
   126         -		KITDLL_LIB_VERSION=`echo "${TCL_VERSION}${TCL_PATCH_LEVEL}" | sed 's@\.@@g'`
   127         -	fi
   128         -
   129         -	AC_SUBST(CFLAGS)
   130         -	AC_SUBST(CPPFLAGS)
   131         -	AC_SUBST(LIBS)
   132         -
   133         -	AC_SUBST(KITDLL_LIB_VERSION)
   134         -
   135         -	AC_MSG_RESULT([$tclconfigsh])
   136         -])
   137         -
   138         -AC_DEFUN(DC_DO_TK, [
   139         -	AC_MSG_CHECKING([path to tk])
   140         -	AC_ARG_WITH(tk, AC_HELP_STRING([--with-tk], [directory containing tk configuration (tkConfig.sh)]), [], [
   141         -		with_tk="auto"
   142         -	])
   143         -
   144         -	if test "${with_tk}" = "auto"; then
   145         -		for dir in ../../../tk/build/tk*/*/ `echo "${PATH}" | sed 's@:@ @g'`; do
   146         -			if test -f "${dir}/tkConfig.sh"; then
   147         -				tkconfigshdir="${dir}"
   148         -				tkconfigsh="${tkconfigshdir}/tkConfig.sh"
   149         -				break
   150         -			fi
   151         -			if test -f "${dir}/../lib/tkConfig.sh"; then
   152         -				tkconfigshdir="${dir}/../lib"
   153         -				tkconfigsh="${tkconfigshdir}/tkConfig.sh"
   154         -				break
   155         -			fi
   156         -			if test -f "${dir}/../lib64/tkConfig.sh"; then
   157         -				tkconfigshdir="${dir}/../lib64"
   158         -				tkconfigsh="${tkconfigshdir}/tkConfig.sh"
   159         -				break
   160         -			fi
   161         -		done
   162         -
   163         -		if test -z "${tkconfigsh}"; then
   164         -			AC_MSG_ERROR([Unable to find tkConfig.sh])
   165         -		fi
   166         -	else
   167         -		tkconfigshdir="${with_tk}"
   168         -		tkconfigsh="${tkconfigshdir}/tkConfig.sh"
   169         -	fi
   170         -
   171         -	if test -f "${tkconfigsh}"; then
   172         -		. "${tkconfigsh}"
   173         -
   174         -		CFLAGS="${CFLAGS} ${TK_INCLUDE_SPEC} -I${tkconfigshdir} -I${TK_SRC_DIR}/generic -I${TK_SRC_DIR}/xlib"
   175         -		CPPFLAGS="${CPPFLAGS} ${TK_INCLUDE_SPEC} -I${tkconfigshdir} -I${TK_SRC_DIR}/generic -I${TK_SRC_DIR}/xlib"
   176         -		LIBS="${LIBS} ${TK_LIBS}"
   177         -
   178         -		NEWLIBS=""
   179         -		for lib in ${LIBS}; do
   180         -			if echo "${lib}" | grep '^-l' >/dev/null; then
   181         -				if echo " ${NEWLIBS} " | grep " ${lib} " >/dev/null; then
   182         -					continue
   183         -				fi
   184         -			fi
   185         -
   186         -			NEWLIBS="${NEWLIBS} ${lib}"
   187         -		done
   188         -		LIBS="${NEWLIBS}"
   189         -		unset NEWLIBS
   190         -	fi
   191         -
   192         -	AC_SUBST(CFLAGS)
   193         -	AC_SUBST(CPPFLAGS)
   194         -	AC_SUBST(LIBS)
   195         -
   196         -	AC_MSG_RESULT([$tkconfigsh])
   197         -])
   198         -
   199         -AC_DEFUN(DC_SETUP_TCL_PLAT_DEFS, [
   200         -	AC_CANONICAL_HOST
   201         -  
   202         -	AC_MSG_CHECKING(host operating system)
   203         -	AC_MSG_RESULT($host_os)
   204         -  
   205         -	case $host_os in
   206         -		mingw32*)
   207         -			CFLAGS="${CFLAGS} -mno-cygwin -mms-bitfields"
   208         -
   209         -			dnl If we are building for Win32, we need to define "BUILD_tcl" so that
   210         -			dnl TCL_STORAGE_CLASS gets defined as DLLEXPORT, to make static linking
   211         -			dnl work
   212         -			AC_DEFINE(BUILD_tcl, [1], [Define if you need to pretend to be building Tcl (Windows)])
   213         -			AC_DEFINE(BUILD_tk, [1], [Define if you need to pretend to be building Tk (Windows)])
   214         -			;;
   215         -		cygwin*)
   216         -			CFLAGS="${CFLAGS} -mms-bitfields"
   217         -			;;
   218         -	esac
   219         -])
   220         -
   221         -AC_DEFUN(DC_TEST_WHOLE_ARCHIVE_SHARED_LIB, [
   222         -
   223         -	SAVE_LIBS="${LIBS}"
   224         -
   225         -	LIBS="${WHOLEARCHIVE} $1 ${NOWHOLEARCHIVE} ${SAVE_LIBS}"
   226         -	AC_LINK_IFELSE(
   227         -		AC_LANG_PROGRAM([[
   228         -			]], [[
   229         -			]]
   230         -		),
   231         -		[
   232         -			LIBS="${SAVE_LIBS}"
   233         -
   234         -			$2
   235         -		], [
   236         -			LIBS="${SAVE_LIBS}"
   237         -
   238         -			$3
   239         -		]
   240         -	)
   241         -])
   242         -
   243         -AC_DEFUN(DC_DO_STATIC_LINK_LIB, [
   244         -	AC_MSG_CHECKING([for how to statically link to $1])
   245         -	 
   246         -	SAVELIBS="${LIBS}"
   247         -	staticlib=""
   248         -	found="0"
   249         -	dnl HP/UX uses -Wl,-a,archive -lstdc++ -Wl,-a,shared_archive
   250         -	dnl Linux and Solaris us -Wl,-Bstatic ... -Wl,-Bdynamic
   251         -	for trylink in "-Wl,-a,archive $2 -Wl,-a,shared_archive" "-Wl,-Bstatic $2 -Wl,-Bdynamic" "$2"; do
   252         -		LIBS="${SAVELIBS} ${trylink}"
   253         -	       
   254         -		AC_LINK_IFELSE(AC_LANG_PROGRAM([], []), [
   255         -			staticlib="${trylink}"
   256         -			found="1"
   257         -	       
   258         -			break
   259         -		])
   260         -	done   
   261         -	 
   262         -	if test "${found}" = "1"; then
   263         -		SAVELIBS=`echo "$SAVELIBS" | sed 's@ $2 @ @'`
   264         -		LIBS="${SAVELIBS} ${staticlib}"
   265         -
   266         -		AC_MSG_RESULT([${staticlib}])
   267         -
   268         -		AC_SUBST(LIBS)
   269         -
   270         -		$3
   271         -	else    
   272         -		LIBS="${SAVELIBS}"
   273         -		
   274         -		AC_MSG_RESULT([cant])
   275         -		
   276         -		$4
   277         -	fi
   278         -])
   279         -
   280         -AC_DEFUN(DC_DO_STATIC_LINK_LIBCXX, [
   281         -	dnl Sun Studio uses -lCstd -lCrun, most platforms use -lstdc++
   282         -	DC_DO_STATIC_LINK_LIB([C++ Library (Sun Studio)], [-lCstd -lCrun],, [
   283         -		DC_DO_STATIC_LINK_LIB([C++ Library (UNIX)], [-lstdc++])
   284         -	])
   285         -])
   286         -
   287         -AC_DEFUN(DC_FIND_TCLKIT_LIBS, [
   288         -	AC_CHECK_TOOL(OBJCOPY, objcopy, [:])
   289         -
   290         -	DC_SETUP_TCL_PLAT_DEFS
   291         -
   292         -	WISH_CFLAGS=""
   293         -
   294         -	dnl We will need this for the Tcl project, which we will always have
   295         -	DC_CHECK_FOR_WHOLE_ARCHIVE
   296         -
   297         -	for proj in tcl tclvfs tk mk4tcl; do
   298         -		AC_MSG_CHECKING([for libraries required for ${proj}])
   299         -
   300         -		libdir="../../../${proj}/inst"
   301         -		libfiles="`find "${libdir}" -name '*.a' 2>/dev/null | tr "\n" ' '`"
   302         -		libfilesnostub="`find "${libdir}" -name '*.a' 2>/dev/null | grep -v 'stub' | tr "\n" ' '`"
   303         -
   304         -		for libfile in ${libfiles}; do
   305         -			LDFLAGS="${LDFLAGS} -L`dirname "${libfile}"`"
   306         -		done
   307         -
   308         -		hide_symbols="1"
   309         -
   310         -		if test "$proj" = "tcl"; then
   311         -			DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $libfilesnostub], [
   312         -				libfiles="${libfilesnostub}"
   313         -			], [
   314         -				DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $libfiles], [
   315         -					libfiles="${libfiles}"
   316         -				])
   317         -			])
   318         -
   319         -			hide_symbols="0"
   320         -		fi
   321         -
   322         -		if test "${proj}" = "mk4tcl"; then
   323         -			if test -n "$libfiles"; then
   324         -				AC_DEFINE(KIT_INCLUDES_MK4TCL, [1], [Specify this if you link against mkt4tcl])
   325         -				DC_DO_STATIC_LINK_LIBCXX
   326         -			fi
   327         -		fi
   328         -
   329         -		if test "$proj" = "tk"; then
   330         -			if test -n "$libfilesnostub"; then
   331         -				DC_DO_TK
   332         -				DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $libfilesnostub], [
   333         -					libfiles="${libfilesnostub}"
   334         -				], [
   335         -					DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $libfiles], [
   336         -						libfiles="${libfiles}"
   337         -					])
   338         -				])
   339         -
   340         -				AC_DEFINE(KIT_INCLUDES_TK, [1], [Specify this if we link statically to Tk])
   341         -
   342         -				if test -n "${TK_VERSION}"; then
   343         -					AC_DEFINE_UNQUOTED(KIT_TK_VERSION, "${TK_VERSION}${TK_PATCH_LEVEL}", [Specify the version of Tk])
   344         -				fi
   345         -
   346         -				if test "$host_os" = "mingw32msvc" -o "$host_os" = "mingw32"; then
   347         -					WISH_CFLAGS="-mwindows"
   348         -				fi
   349         -
   350         -				hide_symbols="0"
   351         -			fi
   352         -		fi
   353         -
   354         -		ARCHS="${ARCHS} ${libfiles}"
   355         -
   356         -		AC_MSG_RESULT([${libfiles}])
   357         -
   358         -		if test "${hide_symbols}" = "1"; then
   359         -			STRIPLIBS="${STRIPLIBS} ${libfiles}"
   360         -		fi
   361         -
   362         -	done
   363         -
   364         -	AC_SUBST(WISH_CFLAGS)
   365         -	AC_SUBST(ARCHS)
   366         -	AC_SUBST(STRIPLIBS)
   367         -])
   368         -
   369         -AC_DEFUN(DC_CHECK_FOR_ACCEPTABLE_DLADDR, [
   370         -	AC_CHECK_HEADERS(dlfcn.h)
   371         -	AC_CHECK_FUNCS(dladdr)
   372         -
   373         -	AC_MSG_CHECKING([for acceptable dladdr])
   374         -
   375         -	AC_LINK_IFELSE(
   376         -		AC_LANG_PROGRAM([[
   377         -#ifdef HAVE_DLFCN_H
   378         -#include <dlfcn.h>
   379         -#endif
   380         -			]], [[
   381         -char *x;
   382         -Dl_info syminfo;
   383         -dladdr((void *) 0, &syminfo);
   384         -x = syminfo.dli_fname;
   385         -			]]
   386         -		),
   387         -		[
   388         -			AC_MSG_RESULT([found])
   389         -			AC_DEFINE(HAVE_ACCEPTABLE_DLADDR, [1], [Define to 1 if you have an acceptable dladdr implementation with dli_fname])
   390         -		], [
   391         -			AC_MSG_RESULT([not found])
   392         -		]
   393         -	)
   394         -])
   395         -
   396         -AC_DEFUN(DC_CHECK_FOR_WHOLE_ARCHIVE, [
   397         -	AC_MSG_CHECKING([for how to link whole archive])
   398         -
   399         -	SAVE_CFLAGS="${CFLAGS}"
   400         -
   401         -	wholearchive=""
   402         -
   403         -	for check in "-Wl,--whole-archive -Wl,--no-whole-archive" "-Wl,-z,allextract -Wl,-z,defaultextract"; do
   404         -		CFLAGS="${SAVE_CFLAGS} ${check}"
   405         -
   406         -		AC_LINK_IFELSE(AC_LANG_PROGRAM([], []),
   407         -			[
   408         -				wholearchive="${check}"
   409         -
   410         -				break
   411         -			]
   412         -		)
   413         -
   414         -	done
   415         -
   416         -	CFLAGS="${SAVE_CFLAGS}"
   417         -
   418         -	if test -z "${wholearchive}"; then
   419         -		AC_MSG_RESULT([not found])
   420         -	else
   421         -		AC_MSG_RESULT([${wholearchive}])
   422         -
   423         -		WHOLEARCHIVE=`echo "${wholearchive}" | cut -f 1 -d ' '`
   424         -		NOWHOLEARCHIVE=`echo "${wholearchive}" | cut -f 2 -d ' '`
   425         -	fi
   426         -
   427         -	AC_SUBST(WHOLEARCHIVE)
   428         -	AC_SUBST(NOWHOLEARCHIVE)
   429         -])

Deleted kitdll/buildsrc/kitdll-0.0/boot.tcl version [fdb0ceb95b].

     1         -proc tclInit {} {
     2         -	rename tclInit {}
     3         -
     4         -	global auto_path tcl_library tcl_libPath
     5         -	global tcl_version
     6         -  
     7         -	# Set path where to mount VFS
     8         -	set tcl_mountpoint "/.KITDLL_TCL"
     9         -
    10         -	set tcl_library [file join $tcl_mountpoint lib tcl$tcl_version]
    11         -	set tcl_libPath [list $tcl_library [file join $tcl_mountpoint lib]]
    12         -
    13         -	# get rid of a build residue
    14         -	unset -nocomplain ::tclDefaultLibrary
    15         -
    16         -	# the following code only gets executed once on startup
    17         -	if {[info exists ::initVFS]} {
    18         -		set vfsHandler [list ::vfs::kitdll::vfshandler tcl]
    19         -
    20         -		# alter path to find encodings
    21         -		if {[info tclversion] eq "8.4"} {
    22         -			load {} pwb
    23         -			librarypath [info library]
    24         -		} else {
    25         -			encoding dirs [list [file join [info library] encoding]] ;# TIP 258
    26         -		}
    27         -
    28         -		# fix system encoding, if it wasn't properly set up (200207.004 bug)
    29         -		if {[encoding system] eq "identity"} {
    30         -			if {[info exists ::tclkit_system_encoding] && $::tclkit_system_encoding != ""} {
    31         -				catch {
    32         -					encoding system $::tclkit_system_encoding
    33         -				}
    34         -			}
    35         -			unset -nocomplain ::tclkit_system_encoding
    36         -		}
    37         -
    38         -		# If we've still not been able to set the encoding, revert to Tclkit defaults
    39         -		if {[encoding system] eq "identity"} {
    40         -			catch {
    41         -				switch $::tcl_platform(platform) {
    42         -					windows		{ encoding system cp1252 }
    43         -					macintosh	{ encoding system macRoman }
    44         -				        default		{ encoding system iso8859-1 }
    45         -				}
    46         -			}
    47         -		}
    48         -
    49         -		# now remount the executable with the correct encoding
    50         -		vfs::filesystem unmount [lindex [::vfs::filesystem info] 0]
    51         -
    52         -		# Resolve symlinks
    53         -		set tcl_mountpoint [file dirname [file normalize [file join $tcl_mountpoint __dummy__]]]
    54         -
    55         -		set tcl_library [file join $tcl_mountpoint lib tcl$tcl_version]
    56         -		set tcl_libPath [list $tcl_library [file join $tcl_mountpoint lib]]
    57         -
    58         -		vfs::filesystem mount $tcl_mountpoint $vfsHandler
    59         -
    60         -	}
    61         -
    62         -	# load config settings file if present
    63         -	namespace eval ::vfs { variable tclkit_version 1 }
    64         -	catch { uplevel #0 [list source [file join $tcl_mountpoint config.tcl]] }
    65         -
    66         -	uplevel #0 [list source [file join $tcl_library init.tcl]]
    67         -  
    68         -	# reset auto_path, so that init.tcl's search outside of tclkit is cancelled
    69         -	set auto_path $tcl_libPath
    70         -
    71         -	# This loads everything needed for "clock scan" to work
    72         -	# "clock scan" is used within "vfs::zip", which may be
    73         -	# loaded before this is run causing the root VFS to break
    74         -	catch { clock scan }
    75         -
    76         -	# Load these, the original Tclkit does so it should be safe.
    77         -	foreach vfsfile [list vfsUtils vfslib] {
    78         -		uplevel #0 [list source [file join $tcl_mountpoint lib vfs ${vfsfile}.tcl]]
    79         -	}
    80         -
    81         -	# Set a maximum seek to avoid reading the entire DLL looking for a
    82         -	# zip header
    83         -	catch {
    84         -		package require vfs::zip
    85         -		set ::zip::max_header_seek 8192
    86         -	}
    87         -
    88         -	# Now that the initialization is complete, mount the user VFS if needed
    89         -	## Mount the VFS from the Shared Object
    90         -	if {[info exists ::initVFS] && [info exists ::tclKitFilename]} {
    91         -		catch {
    92         -			vfs::zip::Mount $::tclKitFilename "/.KITDLL_USER"
    93         -
    94         -			lappend auto_path [file normalize "/.KITDLL_USER/lib"]
    95         -		}
    96         -	}
    97         -
    98         -	## Mount the VFS from executable
    99         -	if {[info exists ::initVFS]} {
   100         -		catch {
   101         -			vfs::zip::Mount [info nameofexecutable] "/.KITDLL_APP"
   102         -
   103         -			lappend auto_path [file normalize "/.KITDLL_APP/lib"]
   104         -		}
   105         -	}
   106         -
   107         -	# Clean up
   108         -	unset -nocomplain ::zip::max_header_seek
   109         -
   110         -	# Clean up after the kitInit.c:preInitCmd
   111         -	unset -nocomplain ::initVFS ::tclKitFilename
   112         -}

Deleted kitdll/buildsrc/kitdll-0.0/config.guess version [23da712e9c].

     1         -#! /bin/sh
     2         -# Attempt to guess a canonical system name.
     3         -#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
     4         -#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
     5         -
     6         -timestamp='2005-07-08'
     7         -
     8         -# This file is free software; you can redistribute it and/or modify it
     9         -# under the terms of the GNU General Public License as published by
    10         -# the Free Software Foundation; either version 2 of the License, or
    11         -# (at your option) any later version.
    12         -#
    13         -# This program is distributed in the hope that it will be useful, but
    14         -# WITHOUT ANY WARRANTY; without even the implied warranty of
    15         -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    16         -# General Public License for more details.
    17         -#
    18         -# You should have received a copy of the GNU General Public License
    19         -# along with this program; if not, write to the Free Software
    20         -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
    21         -# 02110-1301, USA.
    22         -#
    23         -# As a special exception to the GNU General Public License, if you
    24         -# distribute this file as part of a program that contains a
    25         -# configuration script generated by Autoconf, you may include it under
    26         -# the same distribution terms that you use for the rest of that program.
    27         -
    28         -
    29         -# Originally written by Per Bothner <per@bothner.com>.
    30         -# Please send patches to <config-patches@gnu.org>.  Submit a context
    31         -# diff and a properly formatted ChangeLog entry.
    32         -#
    33         -# This script attempts to guess a canonical system name similar to
    34         -# config.sub.  If it succeeds, it prints the system name on stdout, and
    35         -# exits with 0.  Otherwise, it exits with 1.
    36         -#
    37         -# The plan is that this can be called by configure scripts if you
    38         -# don't specify an explicit build system type.
    39         -
    40         -me=`echo "$0" | sed -e 's,.*/,,'`
    41         -
    42         -usage="\
    43         -Usage: $0 [OPTION]
    44         -
    45         -Output the configuration name of the system \`$me' is run on.
    46         -
    47         -Operation modes:
    48         -  -h, --help         print this help, then exit
    49         -  -t, --time-stamp   print date of last modification, then exit
    50         -  -v, --version      print version number, then exit
    51         -
    52         -Report bugs and patches to <config-patches@gnu.org>."
    53         -
    54         -version="\
    55         -GNU config.guess ($timestamp)
    56         -
    57         -Originally written by Per Bothner.
    58         -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    59         -Free Software Foundation, Inc.
    60         -
    61         -This is free software; see the source for copying conditions.  There is NO
    62         -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
    63         -
    64         -help="
    65         -Try \`$me --help' for more information."
    66         -
    67         -# Parse command line
    68         -while test $# -gt 0 ; do
    69         -  case $1 in
    70         -    --time-stamp | --time* | -t )
    71         -       echo "$timestamp" ; exit ;;
    72         -    --version | -v )
    73         -       echo "$version" ; exit ;;
    74         -    --help | --h* | -h )
    75         -       echo "$usage"; exit ;;
    76         -    -- )     # Stop option processing
    77         -       shift; break ;;
    78         -    - )	# Use stdin as input.
    79         -       break ;;
    80         -    -* )
    81         -       echo "$me: invalid option $1$help" >&2
    82         -       exit 1 ;;
    83         -    * )
    84         -       break ;;
    85         -  esac
    86         -done
    87         -
    88         -if test $# != 0; then
    89         -  echo "$me: too many arguments$help" >&2
    90         -  exit 1
    91         -fi
    92         -
    93         -trap 'exit 1' 1 2 15
    94         -
    95         -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
    96         -# compiler to aid in system detection is discouraged as it requires
    97         -# temporary files to be created and, as you can see below, it is a
    98         -# headache to deal with in a portable fashion.
    99         -
   100         -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
   101         -# use `HOST_CC' if defined, but it is deprecated.
   102         -
   103         -# Portable tmp directory creation inspired by the Autoconf team.
   104         -
   105         -set_cc_for_build='
   106         -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
   107         -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
   108         -: ${TMPDIR=/tmp} ;
   109         - { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
   110         - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
   111         - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
   112         - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
   113         -dummy=$tmp/dummy ;
   114         -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
   115         -case $CC_FOR_BUILD,$HOST_CC,$CC in
   116         - ,,)    echo "int x;" > $dummy.c ;
   117         -	for c in cc gcc c89 c99 ; do
   118         -	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
   119         -	     CC_FOR_BUILD="$c"; break ;
   120         -	  fi ;
   121         -	done ;
   122         -	if test x"$CC_FOR_BUILD" = x ; then
   123         -	  CC_FOR_BUILD=no_compiler_found ;
   124         -	fi
   125         -	;;
   126         - ,,*)   CC_FOR_BUILD=$CC ;;
   127         - ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
   128         -esac ; set_cc_for_build= ;'
   129         -
   130         -# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
   131         -# (ghazi@noc.rutgers.edu 1994-08-24)
   132         -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
   133         -	PATH=$PATH:/.attbin ; export PATH
   134         -fi
   135         -
   136         -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
   137         -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
   138         -UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
   139         -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
   140         -
   141         -# Note: order is significant - the case branches are not exclusive.
   142         -
   143         -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
   144         -    *:NetBSD:*:*)
   145         -	# NetBSD (nbsd) targets should (where applicable) match one or
   146         -	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
   147         -	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
   148         -	# switched to ELF, *-*-netbsd* would select the old
   149         -	# object file format.  This provides both forward
   150         -	# compatibility and a consistent mechanism for selecting the
   151         -	# object file format.
   152         -	#
   153         -	# Note: NetBSD doesn't particularly care about the vendor
   154         -	# portion of the name.  We always set it to "unknown".
   155         -	sysctl="sysctl -n hw.machine_arch"
   156         -	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
   157         -	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
   158         -	case "${UNAME_MACHINE_ARCH}" in
   159         -	    armeb) machine=armeb-unknown ;;
   160         -	    arm*) machine=arm-unknown ;;
   161         -	    sh3el) machine=shl-unknown ;;
   162         -	    sh3eb) machine=sh-unknown ;;
   163         -	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
   164         -	esac
   165         -	# The Operating System including object format, if it has switched
   166         -	# to ELF recently, or will in the future.
   167         -	case "${UNAME_MACHINE_ARCH}" in
   168         -	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
   169         -		eval $set_cc_for_build
   170         -		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
   171         -			| grep __ELF__ >/dev/null
   172         -		then
   173         -		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
   174         -		    # Return netbsd for either.  FIX?
   175         -		    os=netbsd
   176         -		else
   177         -		    os=netbsdelf
   178         -		fi
   179         -		;;
   180         -	    *)
   181         -	        os=netbsd
   182         -		;;
   183         -	esac
   184         -	# The OS release
   185         -	# Debian GNU/NetBSD machines have a different userland, and
   186         -	# thus, need a distinct triplet. However, they do not need
   187         -	# kernel version information, so it can be replaced with a
   188         -	# suitable tag, in the style of linux-gnu.
   189         -	case "${UNAME_VERSION}" in
   190         -	    Debian*)
   191         -		release='-gnu'
   192         -		;;
   193         -	    *)
   194         -		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
   195         -		;;
   196         -	esac
   197         -	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
   198         -	# contains redundant information, the shorter form:
   199         -	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
   200         -	echo "${machine}-${os}${release}"
   201         -	exit ;;
   202         -    *:OpenBSD:*:*)
   203         -	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
   204         -	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
   205         -	exit ;;
   206         -    *:ekkoBSD:*:*)
   207         -	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
   208         -	exit ;;
   209         -    macppc:MirBSD:*:*)
   210         -	echo powerppc-unknown-mirbsd${UNAME_RELEASE}
   211         -	exit ;;
   212         -    *:MirBSD:*:*)
   213         -	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
   214         -	exit ;;
   215         -    alpha:OSF1:*:*)
   216         -	case $UNAME_RELEASE in
   217         -	*4.0)
   218         -		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
   219         -		;;
   220         -	*5.*)
   221         -	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
   222         -		;;
   223         -	esac
   224         -	# According to Compaq, /usr/sbin/psrinfo has been available on
   225         -	# OSF/1 and Tru64 systems produced since 1995.  I hope that
   226         -	# covers most systems running today.  This code pipes the CPU
   227         -	# types through head -n 1, so we only detect the type of CPU 0.
   228         -	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
   229         -	case "$ALPHA_CPU_TYPE" in
   230         -	    "EV4 (21064)")
   231         -		UNAME_MACHINE="alpha" ;;
   232         -	    "EV4.5 (21064)")
   233         -		UNAME_MACHINE="alpha" ;;
   234         -	    "LCA4 (21066/21068)")
   235         -		UNAME_MACHINE="alpha" ;;
   236         -	    "EV5 (21164)")
   237         -		UNAME_MACHINE="alphaev5" ;;
   238         -	    "EV5.6 (21164A)")
   239         -		UNAME_MACHINE="alphaev56" ;;
   240         -	    "EV5.6 (21164PC)")
   241         -		UNAME_MACHINE="alphapca56" ;;
   242         -	    "EV5.7 (21164PC)")
   243         -		UNAME_MACHINE="alphapca57" ;;
   244         -	    "EV6 (21264)")
   245         -		UNAME_MACHINE="alphaev6" ;;
   246         -	    "EV6.7 (21264A)")
   247         -		UNAME_MACHINE="alphaev67" ;;
   248         -	    "EV6.8CB (21264C)")
   249         -		UNAME_MACHINE="alphaev68" ;;
   250         -	    "EV6.8AL (21264B)")
   251         -		UNAME_MACHINE="alphaev68" ;;
   252         -	    "EV6.8CX (21264D)")
   253         -		UNAME_MACHINE="alphaev68" ;;
   254         -	    "EV6.9A (21264/EV69A)")
   255         -		UNAME_MACHINE="alphaev69" ;;
   256         -	    "EV7 (21364)")
   257         -		UNAME_MACHINE="alphaev7" ;;
   258         -	    "EV7.9 (21364A)")
   259         -		UNAME_MACHINE="alphaev79" ;;
   260         -	esac
   261         -	# A Pn.n version is a patched version.
   262         -	# A Vn.n version is a released version.
   263         -	# A Tn.n version is a released field test version.
   264         -	# A Xn.n version is an unreleased experimental baselevel.
   265         -	# 1.2 uses "1.2" for uname -r.
   266         -	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
   267         -	exit ;;
   268         -    Alpha\ *:Windows_NT*:*)
   269         -	# How do we know it's Interix rather than the generic POSIX subsystem?
   270         -	# Should we change UNAME_MACHINE based on the output of uname instead
   271         -	# of the specific Alpha model?
   272         -	echo alpha-pc-interix
   273         -	exit ;;
   274         -    21064:Windows_NT:50:3)
   275         -	echo alpha-dec-winnt3.5
   276         -	exit ;;
   277         -    Amiga*:UNIX_System_V:4.0:*)
   278         -	echo m68k-unknown-sysv4
   279         -	exit ;;
   280         -    *:[Aa]miga[Oo][Ss]:*:*)
   281         -	echo ${UNAME_MACHINE}-unknown-amigaos
   282         -	exit ;;
   283         -    *:[Mm]orph[Oo][Ss]:*:*)
   284         -	echo ${UNAME_MACHINE}-unknown-morphos
   285         -	exit ;;
   286         -    *:OS/390:*:*)
   287         -	echo i370-ibm-openedition
   288         -	exit ;;
   289         -    *:z/VM:*:*)
   290         -	echo s390-ibm-zvmoe
   291         -	exit ;;
   292         -    *:OS400:*:*)
   293         -        echo powerpc-ibm-os400
   294         -	exit ;;
   295         -    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
   296         -	echo arm-acorn-riscix${UNAME_RELEASE}
   297         -	exit ;;
   298         -    arm:riscos:*:*|arm:RISCOS:*:*)
   299         -	echo arm-unknown-riscos
   300         -	exit ;;
   301         -    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
   302         -	echo hppa1.1-hitachi-hiuxmpp
   303         -	exit ;;
   304         -    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
   305         -	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
   306         -	if test "`(/bin/universe) 2>/dev/null`" = att ; then
   307         -		echo pyramid-pyramid-sysv3
   308         -	else
   309         -		echo pyramid-pyramid-bsd
   310         -	fi
   311         -	exit ;;
   312         -    NILE*:*:*:dcosx)
   313         -	echo pyramid-pyramid-svr4
   314         -	exit ;;
   315         -    DRS?6000:unix:4.0:6*)
   316         -	echo sparc-icl-nx6
   317         -	exit ;;
   318         -    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
   319         -	case `/usr/bin/uname -p` in
   320         -	    sparc) echo sparc-icl-nx7; exit ;;
   321         -	esac ;;
   322         -    sun4H:SunOS:5.*:*)
   323         -	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
   324         -	exit ;;
   325         -    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
   326         -	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
   327         -	exit ;;
   328         -    i86pc:SunOS:5.*:*)
   329         -	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
   330         -	exit ;;
   331         -    sun4*:SunOS:6*:*)
   332         -	# According to config.sub, this is the proper way to canonicalize
   333         -	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
   334         -	# it's likely to be more like Solaris than SunOS4.
   335         -	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
   336         -	exit ;;
   337         -    sun4*:SunOS:*:*)
   338         -	case "`/usr/bin/arch -k`" in
   339         -	    Series*|S4*)
   340         -		UNAME_RELEASE=`uname -v`
   341         -		;;
   342         -	esac
   343         -	# Japanese Language versions have a version number like `4.1.3-JL'.
   344         -	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
   345         -	exit ;;
   346         -    sun3*:SunOS:*:*)
   347         -	echo m68k-sun-sunos${UNAME_RELEASE}
   348         -	exit ;;
   349         -    sun*:*:4.2BSD:*)
   350         -	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
   351         -	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
   352         -	case "`/bin/arch`" in
   353         -	    sun3)
   354         -		echo m68k-sun-sunos${UNAME_RELEASE}
   355         -		;;
   356         -	    sun4)
   357         -		echo sparc-sun-sunos${UNAME_RELEASE}
   358         -		;;
   359         -	esac
   360         -	exit ;;
   361         -    aushp:SunOS:*:*)
   362         -	echo sparc-auspex-sunos${UNAME_RELEASE}
   363         -	exit ;;
   364         -    # The situation for MiNT is a little confusing.  The machine name
   365         -    # can be virtually everything (everything which is not
   366         -    # "atarist" or "atariste" at least should have a processor
   367         -    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
   368         -    # to the lowercase version "mint" (or "freemint").  Finally
   369         -    # the system name "TOS" denotes a system which is actually not
   370         -    # MiNT.  But MiNT is downward compatible to TOS, so this should
   371         -    # be no problem.
   372         -    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
   373         -        echo m68k-atari-mint${UNAME_RELEASE}
   374         -	exit ;;
   375         -    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
   376         -	echo m68k-atari-mint${UNAME_RELEASE}
   377         -        exit ;;
   378         -    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
   379         -        echo m68k-atari-mint${UNAME_RELEASE}
   380         -	exit ;;
   381         -    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
   382         -        echo m68k-milan-mint${UNAME_RELEASE}
   383         -        exit ;;
   384         -    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
   385         -        echo m68k-hades-mint${UNAME_RELEASE}
   386         -        exit ;;
   387         -    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
   388         -        echo m68k-unknown-mint${UNAME_RELEASE}
   389         -        exit ;;
   390         -    m68k:machten:*:*)
   391         -	echo m68k-apple-machten${UNAME_RELEASE}
   392         -	exit ;;
   393         -    powerpc:machten:*:*)
   394         -	echo powerpc-apple-machten${UNAME_RELEASE}
   395         -	exit ;;
   396         -    RISC*:Mach:*:*)
   397         -	echo mips-dec-mach_bsd4.3
   398         -	exit ;;
   399         -    RISC*:ULTRIX:*:*)
   400         -	echo mips-dec-ultrix${UNAME_RELEASE}
   401         -	exit ;;
   402         -    VAX*:ULTRIX*:*:*)
   403         -	echo vax-dec-ultrix${UNAME_RELEASE}
   404         -	exit ;;
   405         -    2020:CLIX:*:* | 2430:CLIX:*:*)
   406         -	echo clipper-intergraph-clix${UNAME_RELEASE}
   407         -	exit ;;
   408         -    mips:*:*:UMIPS | mips:*:*:RISCos)
   409         -	eval $set_cc_for_build
   410         -	sed 's/^	//' << EOF >$dummy.c
   411         -#ifdef __cplusplus
   412         -#include <stdio.h>  /* for printf() prototype */
   413         -	int main (int argc, char *argv[]) {
   414         -#else
   415         -	int main (argc, argv) int argc; char *argv[]; {
   416         -#endif
   417         -	#if defined (host_mips) && defined (MIPSEB)
   418         -	#if defined (SYSTYPE_SYSV)
   419         -	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
   420         -	#endif
   421         -	#if defined (SYSTYPE_SVR4)
   422         -	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
   423         -	#endif
   424         -	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
   425         -	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
   426         -	#endif
   427         -	#endif
   428         -	  exit (-1);
   429         -	}
   430         -EOF
   431         -	$CC_FOR_BUILD -o $dummy $dummy.c &&
   432         -	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
   433         -	  SYSTEM_NAME=`$dummy $dummyarg` &&
   434         -	    { echo "$SYSTEM_NAME"; exit; }
   435         -	echo mips-mips-riscos${UNAME_RELEASE}
   436         -	exit ;;
   437         -    Motorola:PowerMAX_OS:*:*)
   438         -	echo powerpc-motorola-powermax
   439         -	exit ;;
   440         -    Motorola:*:4.3:PL8-*)
   441         -	echo powerpc-harris-powermax
   442         -	exit ;;
   443         -    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
   444         -	echo powerpc-harris-powermax
   445         -	exit ;;
   446         -    Night_Hawk:Power_UNIX:*:*)
   447         -	echo powerpc-harris-powerunix
   448         -	exit ;;
   449         -    m88k:CX/UX:7*:*)
   450         -	echo m88k-harris-cxux7
   451         -	exit ;;
   452         -    m88k:*:4*:R4*)
   453         -	echo m88k-motorola-sysv4
   454         -	exit ;;
   455         -    m88k:*:3*:R3*)
   456         -	echo m88k-motorola-sysv3
   457         -	exit ;;
   458         -    AViiON:dgux:*:*)
   459         -        # DG/UX returns AViiON for all architectures
   460         -        UNAME_PROCESSOR=`/usr/bin/uname -p`
   461         -	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
   462         -	then
   463         -	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
   464         -	       [ ${TARGET_BINARY_INTERFACE}x = x ]
   465         -	    then
   466         -		echo m88k-dg-dgux${UNAME_RELEASE}
   467         -	    else
   468         -		echo m88k-dg-dguxbcs${UNAME_RELEASE}
   469         -	    fi
   470         -	else
   471         -	    echo i586-dg-dgux${UNAME_RELEASE}
   472         -	fi
   473         - 	exit ;;
   474         -    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
   475         -	echo m88k-dolphin-sysv3
   476         -	exit ;;
   477         -    M88*:*:R3*:*)
   478         -	# Delta 88k system running SVR3
   479         -	echo m88k-motorola-sysv3
   480         -	exit ;;
   481         -    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
   482         -	echo m88k-tektronix-sysv3
   483         -	exit ;;
   484         -    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
   485         -	echo m68k-tektronix-bsd
   486         -	exit ;;
   487         -    *:IRIX*:*:*)
   488         -	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
   489         -	exit ;;
   490         -    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
   491         -	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
   492         -	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
   493         -    i*86:AIX:*:*)
   494         -	echo i386-ibm-aix
   495         -	exit ;;
   496         -    ia64:AIX:*:*)
   497         -	if [ -x /usr/bin/oslevel ] ; then
   498         -		IBM_REV=`/usr/bin/oslevel`
   499         -	else
   500         -		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
   501         -	fi
   502         -	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
   503         -	exit ;;
   504         -    *:AIX:2:3)
   505         -	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
   506         -		eval $set_cc_for_build
   507         -		sed 's/^		//' << EOF >$dummy.c
   508         -		#include <sys/systemcfg.h>
   509         -
   510         -		main()
   511         -			{
   512         -			if (!__power_pc())
   513         -				exit(1);
   514         -			puts("powerpc-ibm-aix3.2.5");
   515         -			exit(0);
   516         -			}
   517         -EOF
   518         -		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
   519         -		then
   520         -			echo "$SYSTEM_NAME"
   521         -		else
   522         -			echo rs6000-ibm-aix3.2.5
   523         -		fi
   524         -	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
   525         -		echo rs6000-ibm-aix3.2.4
   526         -	else
   527         -		echo rs6000-ibm-aix3.2
   528         -	fi
   529         -	exit ;;
   530         -    *:AIX:*:[45])
   531         -	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
   532         -	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
   533         -		IBM_ARCH=rs6000
   534         -	else
   535         -		IBM_ARCH=powerpc
   536         -	fi
   537         -	if [ -x /usr/bin/oslevel ] ; then
   538         -		IBM_REV=`/usr/bin/oslevel`
   539         -	else
   540         -		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
   541         -	fi
   542         -	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
   543         -	exit ;;
   544         -    *:AIX:*:*)
   545         -	echo rs6000-ibm-aix
   546         -	exit ;;
   547         -    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
   548         -	echo romp-ibm-bsd4.4
   549         -	exit ;;
   550         -    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
   551         -	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
   552         -	exit ;;                             # report: romp-ibm BSD 4.3
   553         -    *:BOSX:*:*)
   554         -	echo rs6000-bull-bosx
   555         -	exit ;;
   556         -    DPX/2?00:B.O.S.:*:*)
   557         -	echo m68k-bull-sysv3
   558         -	exit ;;
   559         -    9000/[34]??:4.3bsd:1.*:*)
   560         -	echo m68k-hp-bsd
   561         -	exit ;;
   562         -    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
   563         -	echo m68k-hp-bsd4.4
   564         -	exit ;;
   565         -    9000/[34678]??:HP-UX:*:*)
   566         -	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
   567         -	case "${UNAME_MACHINE}" in
   568         -	    9000/31? )            HP_ARCH=m68000 ;;
   569         -	    9000/[34]?? )         HP_ARCH=m68k ;;
   570         -	    9000/[678][0-9][0-9])
   571         -		if [ -x /usr/bin/getconf ]; then
   572         -		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
   573         -                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
   574         -                    case "${sc_cpu_version}" in
   575         -                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
   576         -                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
   577         -                      532)                      # CPU_PA_RISC2_0
   578         -                        case "${sc_kernel_bits}" in
   579         -                          32) HP_ARCH="hppa2.0n" ;;
   580         -                          64) HP_ARCH="hppa2.0w" ;;
   581         -			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
   582         -                        esac ;;
   583         -                    esac
   584         -		fi
   585         -		if [ "${HP_ARCH}" = "" ]; then
   586         -		    eval $set_cc_for_build
   587         -		    sed 's/^              //' << EOF >$dummy.c
   588         -
   589         -              #define _HPUX_SOURCE
   590         -              #include <stdlib.h>
   591         -              #include <unistd.h>
   592         -
   593         -              int main ()
   594         -              {
   595         -              #if defined(_SC_KERNEL_BITS)
   596         -                  long bits = sysconf(_SC_KERNEL_BITS);
   597         -              #endif
   598         -                  long cpu  = sysconf (_SC_CPU_VERSION);
   599         -
   600         -                  switch (cpu)
   601         -              	{
   602         -              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
   603         -              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
   604         -              	case CPU_PA_RISC2_0:
   605         -              #if defined(_SC_KERNEL_BITS)
   606         -              	    switch (bits)
   607         -              		{
   608         -              		case 64: puts ("hppa2.0w"); break;
   609         -              		case 32: puts ("hppa2.0n"); break;
   610         -              		default: puts ("hppa2.0"); break;
   611         -              		} break;
   612         -              #else  /* !defined(_SC_KERNEL_BITS) */
   613         -              	    puts ("hppa2.0"); break;
   614         -              #endif
   615         -              	default: puts ("hppa1.0"); break;
   616         -              	}
   617         -                  exit (0);
   618         -              }
   619         -EOF
   620         -		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
   621         -		    test -z "$HP_ARCH" && HP_ARCH=hppa
   622         -		fi ;;
   623         -	esac
   624         -	if [ ${HP_ARCH} = "hppa2.0w" ]
   625         -	then
   626         -	    eval $set_cc_for_build
   627         -
   628         -	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
   629         -	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
   630         -	    # generating 64-bit code.  GNU and HP use different nomenclature:
   631         -	    #
   632         -	    # $ CC_FOR_BUILD=cc ./config.guess
   633         -	    # => hppa2.0w-hp-hpux11.23
   634         -	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
   635         -	    # => hppa64-hp-hpux11.23
   636         -
   637         -	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
   638         -		grep __LP64__ >/dev/null
   639         -	    then
   640         -		HP_ARCH="hppa2.0w"
   641         -	    else
   642         -		HP_ARCH="hppa64"
   643         -	    fi
   644         -	fi
   645         -	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
   646         -	exit ;;
   647         -    ia64:HP-UX:*:*)
   648         -	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
   649         -	echo ia64-hp-hpux${HPUX_REV}
   650         -	exit ;;
   651         -    3050*:HI-UX:*:*)
   652         -	eval $set_cc_for_build
   653         -	sed 's/^	//' << EOF >$dummy.c
   654         -	#include <unistd.h>
   655         -	int
   656         -	main ()
   657         -	{
   658         -	  long cpu = sysconf (_SC_CPU_VERSION);
   659         -	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
   660         -	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
   661         -	     results, however.  */
   662         -	  if (CPU_IS_PA_RISC (cpu))
   663         -	    {
   664         -	      switch (cpu)
   665         -		{
   666         -		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
   667         -		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
   668         -		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
   669         -		  default: puts ("hppa-hitachi-hiuxwe2"); break;
   670         -		}
   671         -	    }
   672         -	  else if (CPU_IS_HP_MC68K (cpu))
   673         -	    puts ("m68k-hitachi-hiuxwe2");
   674         -	  else puts ("unknown-hitachi-hiuxwe2");
   675         -	  exit (0);
   676         -	}
   677         -EOF
   678         -	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
   679         -		{ echo "$SYSTEM_NAME"; exit; }
   680         -	echo unknown-hitachi-hiuxwe2
   681         -	exit ;;
   682         -    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
   683         -	echo hppa1.1-hp-bsd
   684         -	exit ;;
   685         -    9000/8??:4.3bsd:*:*)
   686         -	echo hppa1.0-hp-bsd
   687         -	exit ;;
   688         -    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
   689         -	echo hppa1.0-hp-mpeix
   690         -	exit ;;
   691         -    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
   692         -	echo hppa1.1-hp-osf
   693         -	exit ;;
   694         -    hp8??:OSF1:*:*)
   695         -	echo hppa1.0-hp-osf
   696         -	exit ;;
   697         -    i*86:OSF1:*:*)
   698         -	if [ -x /usr/sbin/sysversion ] ; then
   699         -	    echo ${UNAME_MACHINE}-unknown-osf1mk
   700         -	else
   701         -	    echo ${UNAME_MACHINE}-unknown-osf1
   702         -	fi
   703         -	exit ;;
   704         -    parisc*:Lites*:*:*)
   705         -	echo hppa1.1-hp-lites
   706         -	exit ;;
   707         -    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
   708         -	echo c1-convex-bsd
   709         -        exit ;;
   710         -    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
   711         -	if getsysinfo -f scalar_acc
   712         -	then echo c32-convex-bsd
   713         -	else echo c2-convex-bsd
   714         -	fi
   715         -        exit ;;
   716         -    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
   717         -	echo c34-convex-bsd
   718         -        exit ;;
   719         -    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
   720         -	echo c38-convex-bsd
   721         -        exit ;;
   722         -    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
   723         -	echo c4-convex-bsd
   724         -        exit ;;
   725         -    CRAY*Y-MP:*:*:*)
   726         -	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
   727         -	exit ;;
   728         -    CRAY*[A-Z]90:*:*:*)
   729         -	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
   730         -	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
   731         -	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
   732         -	      -e 's/\.[^.]*$/.X/'
   733         -	exit ;;
   734         -    CRAY*TS:*:*:*)
   735         -	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
   736         -	exit ;;
   737         -    CRAY*T3E:*:*:*)
   738         -	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
   739         -	exit ;;
   740         -    CRAY*SV1:*:*:*)
   741         -	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
   742         -	exit ;;
   743         -    *:UNICOS/mp:*:*)
   744         -	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
   745         -	exit ;;
   746         -    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
   747         -	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
   748         -        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
   749         -        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
   750         -        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
   751         -        exit ;;
   752         -    5000:UNIX_System_V:4.*:*)
   753         -        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
   754         -        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
   755         -        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
   756         -	exit ;;
   757         -    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
   758         -	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
   759         -	exit ;;
   760         -    sparc*:BSD/OS:*:*)
   761         -	echo sparc-unknown-bsdi${UNAME_RELEASE}
   762         -	exit ;;
   763         -    *:BSD/OS:*:*)
   764         -	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
   765         -	exit ;;
   766         -    *:FreeBSD:*:*)
   767         -	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
   768         -	exit ;;
   769         -    i*:CYGWIN*:*)
   770         -	echo ${UNAME_MACHINE}-pc-cygwin
   771         -	exit ;;
   772         -    i*:MINGW*:*)
   773         -	echo ${UNAME_MACHINE}-pc-mingw32
   774         -	exit ;;
   775         -    i*:windows32*:*)
   776         -    	# uname -m includes "-pc" on this system.
   777         -    	echo ${UNAME_MACHINE}-mingw32
   778         -	exit ;;
   779         -    i*:PW*:*)
   780         -	echo ${UNAME_MACHINE}-pc-pw32
   781         -	exit ;;
   782         -    x86:Interix*:[34]*)
   783         -	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
   784         -	exit ;;
   785         -    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
   786         -	echo i${UNAME_MACHINE}-pc-mks
   787         -	exit ;;
   788         -    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
   789         -	# How do we know it's Interix rather than the generic POSIX subsystem?
   790         -	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
   791         -	# UNAME_MACHINE based on the output of uname instead of i386?
   792         -	echo i586-pc-interix
   793         -	exit ;;
   794         -    i*:UWIN*:*)
   795         -	echo ${UNAME_MACHINE}-pc-uwin
   796         -	exit ;;
   797         -    amd64:CYGWIN*:*:*)
   798         -	echo x86_64-unknown-cygwin
   799         -	exit ;;
   800         -    p*:CYGWIN*:*)
   801         -	echo powerpcle-unknown-cygwin
   802         -	exit ;;
   803         -    prep*:SunOS:5.*:*)
   804         -	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
   805         -	exit ;;
   806         -    *:GNU:*:*)
   807         -	# the GNU system
   808         -	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
   809         -	exit ;;
   810         -    *:GNU/*:*:*)
   811         -	# other systems with GNU libc and userland
   812         -	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
   813         -	exit ;;
   814         -    i*86:Minix:*:*)
   815         -	echo ${UNAME_MACHINE}-pc-minix
   816         -	exit ;;
   817         -    arm*:Linux:*:*)
   818         -	echo ${UNAME_MACHINE}-unknown-linux-gnu
   819         -	exit ;;
   820         -    cris:Linux:*:*)
   821         -	echo cris-axis-linux-gnu
   822         -	exit ;;
   823         -    crisv32:Linux:*:*)
   824         -	echo crisv32-axis-linux-gnu
   825         -	exit ;;
   826         -    frv:Linux:*:*)
   827         -    	echo frv-unknown-linux-gnu
   828         -	exit ;;
   829         -    ia64:Linux:*:*)
   830         -	echo ${UNAME_MACHINE}-unknown-linux-gnu
   831         -	exit ;;
   832         -    m32r*:Linux:*:*)
   833         -	echo ${UNAME_MACHINE}-unknown-linux-gnu
   834         -	exit ;;
   835         -    m68*:Linux:*:*)
   836         -	echo ${UNAME_MACHINE}-unknown-linux-gnu
   837         -	exit ;;
   838         -    mips:Linux:*:*)
   839         -	eval $set_cc_for_build
   840         -	sed 's/^	//' << EOF >$dummy.c
   841         -	#undef CPU
   842         -	#undef mips
   843         -	#undef mipsel
   844         -	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
   845         -	CPU=mipsel
   846         -	#else
   847         -	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
   848         -	CPU=mips
   849         -	#else
   850         -	CPU=
   851         -	#endif
   852         -	#endif
   853         -EOF
   854         -	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
   855         -	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
   856         -	;;
   857         -    mips64:Linux:*:*)
   858         -	eval $set_cc_for_build
   859         -	sed 's/^	//' << EOF >$dummy.c
   860         -	#undef CPU
   861         -	#undef mips64
   862         -	#undef mips64el
   863         -	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
   864         -	CPU=mips64el
   865         -	#else
   866         -	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
   867         -	CPU=mips64
   868         -	#else
   869         -	CPU=
   870         -	#endif
   871         -	#endif
   872         -EOF
   873         -	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
   874         -	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
   875         -	;;
   876         -    ppc:Linux:*:*)
   877         -	echo powerpc-unknown-linux-gnu
   878         -	exit ;;
   879         -    ppc64:Linux:*:*)
   880         -	echo powerpc64-unknown-linux-gnu
   881         -	exit ;;
   882         -    alpha:Linux:*:*)
   883         -	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
   884         -	  EV5)   UNAME_MACHINE=alphaev5 ;;
   885         -	  EV56)  UNAME_MACHINE=alphaev56 ;;
   886         -	  PCA56) UNAME_MACHINE=alphapca56 ;;
   887         -	  PCA57) UNAME_MACHINE=alphapca56 ;;
   888         -	  EV6)   UNAME_MACHINE=alphaev6 ;;
   889         -	  EV67)  UNAME_MACHINE=alphaev67 ;;
   890         -	  EV68*) UNAME_MACHINE=alphaev68 ;;
   891         -        esac
   892         -	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
   893         -	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
   894         -	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
   895         -	exit ;;
   896         -    parisc:Linux:*:* | hppa:Linux:*:*)
   897         -	# Look for CPU level
   898         -	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
   899         -	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
   900         -	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
   901         -	  *)    echo hppa-unknown-linux-gnu ;;
   902         -	esac
   903         -	exit ;;
   904         -    parisc64:Linux:*:* | hppa64:Linux:*:*)
   905         -	echo hppa64-unknown-linux-gnu
   906         -	exit ;;
   907         -    s390:Linux:*:* | s390x:Linux:*:*)
   908         -	echo ${UNAME_MACHINE}-ibm-linux
   909         -	exit ;;
   910         -    sh64*:Linux:*:*)
   911         -    	echo ${UNAME_MACHINE}-unknown-linux-gnu
   912         -	exit ;;
   913         -    sh*:Linux:*:*)
   914         -	echo ${UNAME_MACHINE}-unknown-linux-gnu
   915         -	exit ;;
   916         -    sparc:Linux:*:* | sparc64:Linux:*:*)
   917         -	echo ${UNAME_MACHINE}-unknown-linux-gnu
   918         -	exit ;;
   919         -    x86_64:Linux:*:*)
   920         -	echo x86_64-unknown-linux-gnu
   921         -	exit ;;
   922         -    i*86:Linux:*:*)
   923         -	# The BFD linker knows what the default object file format is, so
   924         -	# first see if it will tell us. cd to the root directory to prevent
   925         -	# problems with other programs or directories called `ld' in the path.
   926         -	# Set LC_ALL=C to ensure ld outputs messages in English.
   927         -	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
   928         -			 | sed -ne '/supported targets:/!d
   929         -				    s/[ 	][ 	]*/ /g
   930         -				    s/.*supported targets: *//
   931         -				    s/ .*//
   932         -				    p'`
   933         -        case "$ld_supported_targets" in
   934         -	  elf32-i386)
   935         -		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
   936         -		;;
   937         -	  a.out-i386-linux)
   938         -		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
   939         -		exit ;;
   940         -	  coff-i386)
   941         -		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
   942         -		exit ;;
   943         -	  "")
   944         -		# Either a pre-BFD a.out linker (linux-gnuoldld) or
   945         -		# one that does not give us useful --help.
   946         -		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
   947         -		exit ;;
   948         -	esac
   949         -	# Determine whether the default compiler is a.out or elf
   950         -	eval $set_cc_for_build
   951         -	sed 's/^	//' << EOF >$dummy.c
   952         -	#include <features.h>
   953         -	#ifdef __ELF__
   954         -	# ifdef __GLIBC__
   955         -	#  if __GLIBC__ >= 2
   956         -	LIBC=gnu
   957         -	#  else
   958         -	LIBC=gnulibc1
   959         -	#  endif
   960         -	# else
   961         -	LIBC=gnulibc1
   962         -	# endif
   963         -	#else
   964         -	#ifdef __INTEL_COMPILER
   965         -	LIBC=gnu
   966         -	#else
   967         -	LIBC=gnuaout
   968         -	#endif
   969         -	#endif
   970         -	#ifdef __dietlibc__
   971         -	LIBC=dietlibc
   972         -	#endif
   973         -EOF
   974         -	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
   975         -	test x"${LIBC}" != x && {
   976         -		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
   977         -		exit
   978         -	}
   979         -	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
   980         -	;;
   981         -    i*86:DYNIX/ptx:4*:*)
   982         -	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
   983         -	# earlier versions are messed up and put the nodename in both
   984         -	# sysname and nodename.
   985         -	echo i386-sequent-sysv4
   986         -	exit ;;
   987         -    i*86:UNIX_SV:4.2MP:2.*)
   988         -        # Unixware is an offshoot of SVR4, but it has its own version
   989         -        # number series starting with 2...
   990         -        # I am not positive that other SVR4 systems won't match this,
   991         -	# I just have to hope.  -- rms.
   992         -        # Use sysv4.2uw... so that sysv4* matches it.
   993         -	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
   994         -	exit ;;
   995         -    i*86:OS/2:*:*)
   996         -	# If we were able to find `uname', then EMX Unix compatibility
   997         -	# is probably installed.
   998         -	echo ${UNAME_MACHINE}-pc-os2-emx
   999         -	exit ;;
  1000         -    i*86:XTS-300:*:STOP)
  1001         -	echo ${UNAME_MACHINE}-unknown-stop
  1002         -	exit ;;
  1003         -    i*86:atheos:*:*)
  1004         -	echo ${UNAME_MACHINE}-unknown-atheos
  1005         -	exit ;;
  1006         -    i*86:syllable:*:*)
  1007         -	echo ${UNAME_MACHINE}-pc-syllable
  1008         -	exit ;;
  1009         -    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
  1010         -	echo i386-unknown-lynxos${UNAME_RELEASE}
  1011         -	exit ;;
  1012         -    i*86:*DOS:*:*)
  1013         -	echo ${UNAME_MACHINE}-pc-msdosdjgpp
  1014         -	exit ;;
  1015         -    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
  1016         -	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
  1017         -	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
  1018         -		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
  1019         -	else
  1020         -		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
  1021         -	fi
  1022         -	exit ;;
  1023         -    i*86:*:5:[678]*)
  1024         -    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
  1025         -	case `/bin/uname -X | grep "^Machine"` in
  1026         -	    *486*)	     UNAME_MACHINE=i486 ;;
  1027         -	    *Pentium)	     UNAME_MACHINE=i586 ;;
  1028         -	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
  1029         -	esac
  1030         -	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
  1031         -	exit ;;
  1032         -    i*86:*:3.2:*)
  1033         -	if test -f /usr/options/cb.name; then
  1034         -		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
  1035         -		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
  1036         -	elif /bin/uname -X 2>/dev/null >/dev/null ; then
  1037         -		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
  1038         -		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
  1039         -		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
  1040         -			&& UNAME_MACHINE=i586
  1041         -		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
  1042         -			&& UNAME_MACHINE=i686
  1043         -		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
  1044         -			&& UNAME_MACHINE=i686
  1045         -		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
  1046         -	else
  1047         -		echo ${UNAME_MACHINE}-pc-sysv32
  1048         -	fi
  1049         -	exit ;;
  1050         -    pc:*:*:*)
  1051         -	# Left here for compatibility:
  1052         -        # uname -m prints for DJGPP always 'pc', but it prints nothing about
  1053         -        # the processor, so we play safe by assuming i386.
  1054         -	echo i386-pc-msdosdjgpp
  1055         -        exit ;;
  1056         -    Intel:Mach:3*:*)
  1057         -	echo i386-pc-mach3
  1058         -	exit ;;
  1059         -    paragon:*:*:*)
  1060         -	echo i860-intel-osf1
  1061         -	exit ;;
  1062         -    i860:*:4.*:*) # i860-SVR4
  1063         -	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
  1064         -	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
  1065         -	else # Add other i860-SVR4 vendors below as they are discovered.
  1066         -	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
  1067         -	fi
  1068         -	exit ;;
  1069         -    mini*:CTIX:SYS*5:*)
  1070         -	# "miniframe"
  1071         -	echo m68010-convergent-sysv
  1072         -	exit ;;
  1073         -    mc68k:UNIX:SYSTEM5:3.51m)
  1074         -	echo m68k-convergent-sysv
  1075         -	exit ;;
  1076         -    M680?0:D-NIX:5.3:*)
  1077         -	echo m68k-diab-dnix
  1078         -	exit ;;
  1079         -    M68*:*:R3V[5678]*:*)
  1080         -	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
  1081         -    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
  1082         -	OS_REL=''
  1083         -	test -r /etc/.relid \
  1084         -	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
  1085         -	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
  1086         -	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
  1087         -	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
  1088         -	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
  1089         -    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
  1090         -        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
  1091         -          && { echo i486-ncr-sysv4; exit; } ;;
  1092         -    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
  1093         -	echo m68k-unknown-lynxos${UNAME_RELEASE}
  1094         -	exit ;;
  1095         -    mc68030:UNIX_System_V:4.*:*)
  1096         -	echo m68k-atari-sysv4
  1097         -	exit ;;
  1098         -    TSUNAMI:LynxOS:2.*:*)
  1099         -	echo sparc-unknown-lynxos${UNAME_RELEASE}
  1100         -	exit ;;
  1101         -    rs6000:LynxOS:2.*:*)
  1102         -	echo rs6000-unknown-lynxos${UNAME_RELEASE}
  1103         -	exit ;;
  1104         -    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
  1105         -	echo powerpc-unknown-lynxos${UNAME_RELEASE}
  1106         -	exit ;;
  1107         -    SM[BE]S:UNIX_SV:*:*)
  1108         -	echo mips-dde-sysv${UNAME_RELEASE}
  1109         -	exit ;;
  1110         -    RM*:ReliantUNIX-*:*:*)
  1111         -	echo mips-sni-sysv4
  1112         -	exit ;;
  1113         -    RM*:SINIX-*:*:*)
  1114         -	echo mips-sni-sysv4
  1115         -	exit ;;
  1116         -    *:SINIX-*:*:*)
  1117         -	if uname -p 2>/dev/null >/dev/null ; then
  1118         -		UNAME_MACHINE=`(uname -p) 2>/dev/null`
  1119         -		echo ${UNAME_MACHINE}-sni-sysv4
  1120         -	else
  1121         -		echo ns32k-sni-sysv
  1122         -	fi
  1123         -	exit ;;
  1124         -    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
  1125         -                      # says <Richard.M.Bartel@ccMail.Census.GOV>
  1126         -        echo i586-unisys-sysv4
  1127         -        exit ;;
  1128         -    *:UNIX_System_V:4*:FTX*)
  1129         -	# From Gerald Hewes <hewes@openmarket.com>.
  1130         -	# How about differentiating between stratus architectures? -djm
  1131         -	echo hppa1.1-stratus-sysv4
  1132         -	exit ;;
  1133         -    *:*:*:FTX*)
  1134         -	# From seanf@swdc.stratus.com.
  1135         -	echo i860-stratus-sysv4
  1136         -	exit ;;
  1137         -    i*86:VOS:*:*)
  1138         -	# From Paul.Green@stratus.com.
  1139         -	echo ${UNAME_MACHINE}-stratus-vos
  1140         -	exit ;;
  1141         -    *:VOS:*:*)
  1142         -	# From Paul.Green@stratus.com.
  1143         -	echo hppa1.1-stratus-vos
  1144         -	exit ;;
  1145         -    mc68*:A/UX:*:*)
  1146         -	echo m68k-apple-aux${UNAME_RELEASE}
  1147         -	exit ;;
  1148         -    news*:NEWS-OS:6*:*)
  1149         -	echo mips-sony-newsos6
  1150         -	exit ;;
  1151         -    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
  1152         -	if [ -d /usr/nec ]; then
  1153         -	        echo mips-nec-sysv${UNAME_RELEASE}
  1154         -	else
  1155         -	        echo mips-unknown-sysv${UNAME_RELEASE}
  1156         -	fi
  1157         -        exit ;;
  1158         -    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
  1159         -	echo powerpc-be-beos
  1160         -	exit ;;
  1161         -    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
  1162         -	echo powerpc-apple-beos
  1163         -	exit ;;
  1164         -    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
  1165         -	echo i586-pc-beos
  1166         -	exit ;;
  1167         -    SX-4:SUPER-UX:*:*)
  1168         -	echo sx4-nec-superux${UNAME_RELEASE}
  1169         -	exit ;;
  1170         -    SX-5:SUPER-UX:*:*)
  1171         -	echo sx5-nec-superux${UNAME_RELEASE}
  1172         -	exit ;;
  1173         -    SX-6:SUPER-UX:*:*)
  1174         -	echo sx6-nec-superux${UNAME_RELEASE}
  1175         -	exit ;;
  1176         -    Power*:Rhapsody:*:*)
  1177         -	echo powerpc-apple-rhapsody${UNAME_RELEASE}
  1178         -	exit ;;
  1179         -    *:Rhapsody:*:*)
  1180         -	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
  1181         -	exit ;;
  1182         -    *:Darwin:*:*)
  1183         -	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
  1184         -	case $UNAME_PROCESSOR in
  1185         -	    *86) UNAME_PROCESSOR=i686 ;;
  1186         -	    unknown) UNAME_PROCESSOR=powerpc ;;
  1187         -	esac
  1188         -	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
  1189         -	exit ;;
  1190         -    *:procnto*:*:* | *:QNX:[0123456789]*:*)
  1191         -	UNAME_PROCESSOR=`uname -p`
  1192         -	if test "$UNAME_PROCESSOR" = "x86"; then
  1193         -		UNAME_PROCESSOR=i386
  1194         -		UNAME_MACHINE=pc
  1195         -	fi
  1196         -	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
  1197         -	exit ;;
  1198         -    *:QNX:*:4*)
  1199         -	echo i386-pc-qnx
  1200         -	exit ;;
  1201         -    NSE-?:NONSTOP_KERNEL:*:*)
  1202         -	echo nse-tandem-nsk${UNAME_RELEASE}
  1203         -	exit ;;
  1204         -    NSR-?:NONSTOP_KERNEL:*:*)
  1205         -	echo nsr-tandem-nsk${UNAME_RELEASE}
  1206         -	exit ;;
  1207         -    *:NonStop-UX:*:*)
  1208         -	echo mips-compaq-nonstopux
  1209         -	exit ;;
  1210         -    BS2000:POSIX*:*:*)
  1211         -	echo bs2000-siemens-sysv
  1212         -	exit ;;
  1213         -    DS/*:UNIX_System_V:*:*)
  1214         -	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
  1215         -	exit ;;
  1216         -    *:Plan9:*:*)
  1217         -	# "uname -m" is not consistent, so use $cputype instead. 386
  1218         -	# is converted to i386 for consistency with other x86
  1219         -	# operating systems.
  1220         -	if test "$cputype" = "386"; then
  1221         -	    UNAME_MACHINE=i386
  1222         -	else
  1223         -	    UNAME_MACHINE="$cputype"
  1224         -	fi
  1225         -	echo ${UNAME_MACHINE}-unknown-plan9
  1226         -	exit ;;
  1227         -    *:TOPS-10:*:*)
  1228         -	echo pdp10-unknown-tops10
  1229         -	exit ;;
  1230         -    *:TENEX:*:*)
  1231         -	echo pdp10-unknown-tenex
  1232         -	exit ;;
  1233         -    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
  1234         -	echo pdp10-dec-tops20
  1235         -	exit ;;
  1236         -    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
  1237         -	echo pdp10-xkl-tops20
  1238         -	exit ;;
  1239         -    *:TOPS-20:*:*)
  1240         -	echo pdp10-unknown-tops20
  1241         -	exit ;;
  1242         -    *:ITS:*:*)
  1243         -	echo pdp10-unknown-its
  1244         -	exit ;;
  1245         -    SEI:*:*:SEIUX)
  1246         -        echo mips-sei-seiux${UNAME_RELEASE}
  1247         -	exit ;;
  1248         -    *:DragonFly:*:*)
  1249         -	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
  1250         -	exit ;;
  1251         -    *:*VMS:*:*)
  1252         -    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
  1253         -	case "${UNAME_MACHINE}" in
  1254         -	    A*) echo alpha-dec-vms ; exit ;;
  1255         -	    I*) echo ia64-dec-vms ; exit ;;
  1256         -	    V*) echo vax-dec-vms ; exit ;;
  1257         -	esac ;;
  1258         -    *:XENIX:*:SysV)
  1259         -	echo i386-pc-xenix
  1260         -	exit ;;
  1261         -    i*86:skyos:*:*)
  1262         -	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
  1263         -	exit ;;
  1264         -esac
  1265         -
  1266         -#echo '(No uname command or uname output not recognized.)' 1>&2
  1267         -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
  1268         -
  1269         -eval $set_cc_for_build
  1270         -cat >$dummy.c <<EOF
  1271         -#ifdef _SEQUENT_
  1272         -# include <sys/types.h>
  1273         -# include <sys/utsname.h>
  1274         -#endif
  1275         -main ()
  1276         -{
  1277         -#if defined (sony)
  1278         -#if defined (MIPSEB)
  1279         -  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
  1280         -     I don't know....  */
  1281         -  printf ("mips-sony-bsd\n"); exit (0);
  1282         -#else
  1283         -#include <sys/param.h>
  1284         -  printf ("m68k-sony-newsos%s\n",
  1285         -#ifdef NEWSOS4
  1286         -          "4"
  1287         -#else
  1288         -	  ""
  1289         -#endif
  1290         -         ); exit (0);
  1291         -#endif
  1292         -#endif
  1293         -
  1294         -#if defined (__arm) && defined (__acorn) && defined (__unix)
  1295         -  printf ("arm-acorn-riscix\n"); exit (0);
  1296         -#endif
  1297         -
  1298         -#if defined (hp300) && !defined (hpux)
  1299         -  printf ("m68k-hp-bsd\n"); exit (0);
  1300         -#endif
  1301         -
  1302         -#if defined (NeXT)
  1303         -#if !defined (__ARCHITECTURE__)
  1304         -#define __ARCHITECTURE__ "m68k"
  1305         -#endif
  1306         -  int version;
  1307         -  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
  1308         -  if (version < 4)
  1309         -    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
  1310         -  else
  1311         -    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
  1312         -  exit (0);
  1313         -#endif
  1314         -
  1315         -#if defined (MULTIMAX) || defined (n16)
  1316         -#if defined (UMAXV)
  1317         -  printf ("ns32k-encore-sysv\n"); exit (0);
  1318         -#else
  1319         -#if defined (CMU)
  1320         -  printf ("ns32k-encore-mach\n"); exit (0);
  1321         -#else
  1322         -  printf ("ns32k-encore-bsd\n"); exit (0);
  1323         -#endif
  1324         -#endif
  1325         -#endif
  1326         -
  1327         -#if defined (__386BSD__)
  1328         -  printf ("i386-pc-bsd\n"); exit (0);
  1329         -#endif
  1330         -
  1331         -#if defined (sequent)
  1332         -#if defined (i386)
  1333         -  printf ("i386-sequent-dynix\n"); exit (0);
  1334         -#endif
  1335         -#if defined (ns32000)
  1336         -  printf ("ns32k-sequent-dynix\n"); exit (0);
  1337         -#endif
  1338         -#endif
  1339         -
  1340         -#if defined (_SEQUENT_)
  1341         -    struct utsname un;
  1342         -
  1343         -    uname(&un);
  1344         -
  1345         -    if (strncmp(un.version, "V2", 2) == 0) {
  1346         -	printf ("i386-sequent-ptx2\n"); exit (0);
  1347         -    }
  1348         -    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
  1349         -	printf ("i386-sequent-ptx1\n"); exit (0);
  1350         -    }
  1351         -    printf ("i386-sequent-ptx\n"); exit (0);
  1352         -
  1353         -#endif
  1354         -
  1355         -#if defined (vax)
  1356         -# if !defined (ultrix)
  1357         -#  include <sys/param.h>
  1358         -#  if defined (BSD)
  1359         -#   if BSD == 43
  1360         -      printf ("vax-dec-bsd4.3\n"); exit (0);
  1361         -#   else
  1362         -#    if BSD == 199006
  1363         -      printf ("vax-dec-bsd4.3reno\n"); exit (0);
  1364         -#    else
  1365         -      printf ("vax-dec-bsd\n"); exit (0);
  1366         -#    endif
  1367         -#   endif
  1368         -#  else
  1369         -    printf ("vax-dec-bsd\n"); exit (0);
  1370         -#  endif
  1371         -# else
  1372         -    printf ("vax-dec-ultrix\n"); exit (0);
  1373         -# endif
  1374         -#endif
  1375         -
  1376         -#if defined (alliant) && defined (i860)
  1377         -  printf ("i860-alliant-bsd\n"); exit (0);
  1378         -#endif
  1379         -
  1380         -  exit (1);
  1381         -}
  1382         -EOF
  1383         -
  1384         -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
  1385         -	{ echo "$SYSTEM_NAME"; exit; }
  1386         -
  1387         -# Apollos put the system type in the environment.
  1388         -
  1389         -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
  1390         -
  1391         -# Convex versions that predate uname can use getsysinfo(1)
  1392         -
  1393         -if [ -x /usr/convex/getsysinfo ]
  1394         -then
  1395         -    case `getsysinfo -f cpu_type` in
  1396         -    c1*)
  1397         -	echo c1-convex-bsd
  1398         -	exit ;;
  1399         -    c2*)
  1400         -	if getsysinfo -f scalar_acc
  1401         -	then echo c32-convex-bsd
  1402         -	else echo c2-convex-bsd
  1403         -	fi
  1404         -	exit ;;
  1405         -    c34*)
  1406         -	echo c34-convex-bsd
  1407         -	exit ;;
  1408         -    c38*)
  1409         -	echo c38-convex-bsd
  1410         -	exit ;;
  1411         -    c4*)
  1412         -	echo c4-convex-bsd
  1413         -	exit ;;
  1414         -    esac
  1415         -fi
  1416         -
  1417         -cat >&2 <<EOF
  1418         -$0: unable to guess system type
  1419         -
  1420         -This script, last modified $timestamp, has failed to recognize
  1421         -the operating system you are using. It is advised that you
  1422         -download the most up to date version of the config scripts from
  1423         -
  1424         -  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
  1425         -and
  1426         -  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
  1427         -
  1428         -If the version you run ($0) is already up to date, please
  1429         -send the following data and any information you think might be
  1430         -pertinent to <config-patches@gnu.org> in order to provide the needed
  1431         -information to handle your system.
  1432         -
  1433         -config.guess timestamp = $timestamp
  1434         -
  1435         -uname -m = `(uname -m) 2>/dev/null || echo unknown`
  1436         -uname -r = `(uname -r) 2>/dev/null || echo unknown`
  1437         -uname -s = `(uname -s) 2>/dev/null || echo unknown`
  1438         -uname -v = `(uname -v) 2>/dev/null || echo unknown`
  1439         -
  1440         -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
  1441         -/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
  1442         -
  1443         -hostinfo               = `(hostinfo) 2>/dev/null`
  1444         -/bin/universe          = `(/bin/universe) 2>/dev/null`
  1445         -/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
  1446         -/bin/arch              = `(/bin/arch) 2>/dev/null`
  1447         -/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
  1448         -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
  1449         -
  1450         -UNAME_MACHINE = ${UNAME_MACHINE}
  1451         -UNAME_RELEASE = ${UNAME_RELEASE}
  1452         -UNAME_SYSTEM  = ${UNAME_SYSTEM}
  1453         -UNAME_VERSION = ${UNAME_VERSION}
  1454         -EOF
  1455         -
  1456         -exit 1
  1457         -
  1458         -# Local variables:
  1459         -# eval: (add-hook 'write-file-hooks 'time-stamp)
  1460         -# time-stamp-start: "timestamp='"
  1461         -# time-stamp-format: "%:y-%02m-%02d"
  1462         -# time-stamp-end: "'"
  1463         -# End:

Deleted kitdll/buildsrc/kitdll-0.0/config.sub version [1f0ad14050].

     1         -#! /bin/sh
     2         -# Configuration validation subroutine script.
     3         -#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
     4         -#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
     5         -
     6         -timestamp='2005-07-08'
     7         -
     8         -# This file is (in principle) common to ALL GNU software.
     9         -# The presence of a machine in this file suggests that SOME GNU software
    10         -# can handle that machine.  It does not imply ALL GNU software can.
    11         -#
    12         -# This file is free software; you can redistribute it and/or modify
    13         -# it under the terms of the GNU General Public License as published by
    14         -# the Free Software Foundation; either version 2 of the License, or
    15         -# (at your option) any later version.
    16         -#
    17         -# This program is distributed in the hope that it will be useful,
    18         -# but WITHOUT ANY WARRANTY; without even the implied warranty of
    19         -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20         -# GNU General Public License for more details.
    21         -#
    22         -# You should have received a copy of the GNU General Public License
    23         -# along with this program; if not, write to the Free Software
    24         -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
    25         -# 02110-1301, USA.
    26         -#
    27         -# As a special exception to the GNU General Public License, if you
    28         -# distribute this file as part of a program that contains a
    29         -# configuration script generated by Autoconf, you may include it under
    30         -# the same distribution terms that you use for the rest of that program.
    31         -
    32         -
    33         -# Please send patches to <config-patches@gnu.org>.  Submit a context
    34         -# diff and a properly formatted ChangeLog entry.
    35         -#
    36         -# Configuration subroutine to validate and canonicalize a configuration type.
    37         -# Supply the specified configuration type as an argument.
    38         -# If it is invalid, we print an error message on stderr and exit with code 1.
    39         -# Otherwise, we print the canonical config type on stdout and succeed.
    40         -
    41         -# This file is supposed to be the same for all GNU packages
    42         -# and recognize all the CPU types, system types and aliases
    43         -# that are meaningful with *any* GNU software.
    44         -# Each package is responsible for reporting which valid configurations
    45         -# it does not support.  The user should be able to distinguish
    46         -# a failure to support a valid configuration from a meaningless
    47         -# configuration.
    48         -
    49         -# The goal of this file is to map all the various variations of a given
    50         -# machine specification into a single specification in the form:
    51         -#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
    52         -# or in some cases, the newer four-part form:
    53         -#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
    54         -# It is wrong to echo any other type of specification.
    55         -
    56         -me=`echo "$0" | sed -e 's,.*/,,'`
    57         -
    58         -usage="\
    59         -Usage: $0 [OPTION] CPU-MFR-OPSYS
    60         -       $0 [OPTION] ALIAS
    61         -
    62         -Canonicalize a configuration name.
    63         -
    64         -Operation modes:
    65         -  -h, --help         print this help, then exit
    66         -  -t, --time-stamp   print date of last modification, then exit
    67         -  -v, --version      print version number, then exit
    68         -
    69         -Report bugs and patches to <config-patches@gnu.org>."
    70         -
    71         -version="\
    72         -GNU config.sub ($timestamp)
    73         -
    74         -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    75         -Free Software Foundation, Inc.
    76         -
    77         -This is free software; see the source for copying conditions.  There is NO
    78         -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
    79         -
    80         -help="
    81         -Try \`$me --help' for more information."
    82         -
    83         -# Parse command line
    84         -while test $# -gt 0 ; do
    85         -  case $1 in
    86         -    --time-stamp | --time* | -t )
    87         -       echo "$timestamp" ; exit ;;
    88         -    --version | -v )
    89         -       echo "$version" ; exit ;;
    90         -    --help | --h* | -h )
    91         -       echo "$usage"; exit ;;
    92         -    -- )     # Stop option processing
    93         -       shift; break ;;
    94         -    - )	# Use stdin as input.
    95         -       break ;;
    96         -    -* )
    97         -       echo "$me: invalid option $1$help"
    98         -       exit 1 ;;
    99         -
   100         -    *local*)
   101         -       # First pass through any local machine types.
   102         -       echo $1
   103         -       exit ;;
   104         -
   105         -    * )
   106         -       break ;;
   107         -  esac
   108         -done
   109         -
   110         -case $# in
   111         - 0) echo "$me: missing argument$help" >&2
   112         -    exit 1;;
   113         - 1) ;;
   114         - *) echo "$me: too many arguments$help" >&2
   115         -    exit 1;;
   116         -esac
   117         -
   118         -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
   119         -# Here we must recognize all the valid KERNEL-OS combinations.
   120         -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
   121         -case $maybe_os in
   122         -  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
   123         -  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
   124         -    os=-$maybe_os
   125         -    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
   126         -    ;;
   127         -  *)
   128         -    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
   129         -    if [ $basic_machine != $1 ]
   130         -    then os=`echo $1 | sed 's/.*-/-/'`
   131         -    else os=; fi
   132         -    ;;
   133         -esac
   134         -
   135         -### Let's recognize common machines as not being operating systems so
   136         -### that things like config.sub decstation-3100 work.  We also
   137         -### recognize some manufacturers as not being operating systems, so we
   138         -### can provide default operating systems below.
   139         -case $os in
   140         -	-sun*os*)
   141         -		# Prevent following clause from handling this invalid input.
   142         -		;;
   143         -	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
   144         -	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
   145         -	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
   146         -	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
   147         -	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
   148         -	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
   149         -	-apple | -axis | -knuth | -cray)
   150         -		os=
   151         -		basic_machine=$1
   152         -		;;
   153         -	-sim | -cisco | -oki | -wec | -winbond)
   154         -		os=
   155         -		basic_machine=$1
   156         -		;;
   157         -	-scout)
   158         -		;;
   159         -	-wrs)
   160         -		os=-vxworks
   161         -		basic_machine=$1
   162         -		;;
   163         -	-chorusos*)
   164         -		os=-chorusos
   165         -		basic_machine=$1
   166         -		;;
   167         - 	-chorusrdb)
   168         - 		os=-chorusrdb
   169         -		basic_machine=$1
   170         - 		;;
   171         -	-hiux*)
   172         -		os=-hiuxwe2
   173         -		;;
   174         -	-sco5)
   175         -		os=-sco3.2v5
   176         -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
   177         -		;;
   178         -	-sco4)
   179         -		os=-sco3.2v4
   180         -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
   181         -		;;
   182         -	-sco3.2.[4-9]*)
   183         -		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
   184         -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
   185         -		;;
   186         -	-sco3.2v[4-9]*)
   187         -		# Don't forget version if it is 3.2v4 or newer.
   188         -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
   189         -		;;
   190         -	-sco*)
   191         -		os=-sco3.2v2
   192         -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
   193         -		;;
   194         -	-udk*)
   195         -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
   196         -		;;
   197         -	-isc)
   198         -		os=-isc2.2
   199         -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
   200         -		;;
   201         -	-clix*)
   202         -		basic_machine=clipper-intergraph
   203         -		;;
   204         -	-isc*)
   205         -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
   206         -		;;
   207         -	-lynx*)
   208         -		os=-lynxos
   209         -		;;
   210         -	-ptx*)
   211         -		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
   212         -		;;
   213         -	-windowsnt*)
   214         -		os=`echo $os | sed -e 's/windowsnt/winnt/'`
   215         -		;;
   216         -	-psos*)
   217         -		os=-psos
   218         -		;;
   219         -	-mint | -mint[0-9]*)
   220         -		basic_machine=m68k-atari
   221         -		os=-mint
   222         -		;;
   223         -esac
   224         -
   225         -# Decode aliases for certain CPU-COMPANY combinations.
   226         -case $basic_machine in
   227         -	# Recognize the basic CPU types without company name.
   228         -	# Some are omitted here because they have special meanings below.
   229         -	1750a | 580 \
   230         -	| a29k \
   231         -	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
   232         -	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
   233         -	| am33_2.0 \
   234         -	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
   235         -	| bfin \
   236         -	| c4x | clipper \
   237         -	| d10v | d30v | dlx | dsp16xx \
   238         -	| fr30 | frv \
   239         -	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
   240         -	| i370 | i860 | i960 | ia64 \
   241         -	| ip2k | iq2000 \
   242         -	| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
   243         -	| mips | mipsbe | mipseb | mipsel | mipsle \
   244         -	| mips16 \
   245         -	| mips64 | mips64el \
   246         -	| mips64vr | mips64vrel \
   247         -	| mips64orion | mips64orionel \
   248         -	| mips64vr4100 | mips64vr4100el \
   249         -	| mips64vr4300 | mips64vr4300el \
   250         -	| mips64vr5000 | mips64vr5000el \
   251         -	| mips64vr5900 | mips64vr5900el \
   252         -	| mipsisa32 | mipsisa32el \
   253         -	| mipsisa32r2 | mipsisa32r2el \
   254         -	| mipsisa64 | mipsisa64el \
   255         -	| mipsisa64r2 | mipsisa64r2el \
   256         -	| mipsisa64sb1 | mipsisa64sb1el \
   257         -	| mipsisa64sr71k | mipsisa64sr71kel \
   258         -	| mipstx39 | mipstx39el \
   259         -	| mn10200 | mn10300 \
   260         -	| ms1 \
   261         -	| msp430 \
   262         -	| ns16k | ns32k \
   263         -	| or32 \
   264         -	| pdp10 | pdp11 | pj | pjl \
   265         -	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
   266         -	| pyramid \
   267         -	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
   268         -	| sh64 | sh64le \
   269         -	| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
   270         -	| sparcv8 | sparcv9 | sparcv9b \
   271         -	| strongarm \
   272         -	| tahoe | thumb | tic4x | tic80 | tron \
   273         -	| v850 | v850e \
   274         -	| we32k \
   275         -	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
   276         -	| z8k)
   277         -		basic_machine=$basic_machine-unknown
   278         -		;;
   279         -	m32c)
   280         -		basic_machine=$basic_machine-unknown
   281         -		;;
   282         -	m6811 | m68hc11 | m6812 | m68hc12)
   283         -		# Motorola 68HC11/12.
   284         -		basic_machine=$basic_machine-unknown
   285         -		os=-none
   286         -		;;
   287         -	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
   288         -		;;
   289         -
   290         -	# We use `pc' rather than `unknown'
   291         -	# because (1) that's what they normally are, and
   292         -	# (2) the word "unknown" tends to confuse beginning users.
   293         -	i*86 | x86_64)
   294         -	  basic_machine=$basic_machine-pc
   295         -	  ;;
   296         -	# Object if more than one company name word.
   297         -	*-*-*)
   298         -		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
   299         -		exit 1
   300         -		;;
   301         -	# Recognize the basic CPU types with company name.
   302         -	580-* \
   303         -	| a29k-* \
   304         -	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
   305         -	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
   306         -	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
   307         -	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
   308         -	| avr-* \
   309         -	| bfin-* | bs2000-* \
   310         -	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
   311         -	| clipper-* | craynv-* | cydra-* \
   312         -	| d10v-* | d30v-* | dlx-* \
   313         -	| elxsi-* \
   314         -	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
   315         -	| h8300-* | h8500-* \
   316         -	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
   317         -	| i*86-* | i860-* | i960-* | ia64-* \
   318         -	| ip2k-* | iq2000-* \
   319         -	| m32r-* | m32rle-* \
   320         -	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
   321         -	| m88110-* | m88k-* | maxq-* | mcore-* \
   322         -	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
   323         -	| mips16-* \
   324         -	| mips64-* | mips64el-* \
   325         -	| mips64vr-* | mips64vrel-* \
   326         -	| mips64orion-* | mips64orionel-* \
   327         -	| mips64vr4100-* | mips64vr4100el-* \
   328         -	| mips64vr4300-* | mips64vr4300el-* \
   329         -	| mips64vr5000-* | mips64vr5000el-* \
   330         -	| mips64vr5900-* | mips64vr5900el-* \
   331         -	| mipsisa32-* | mipsisa32el-* \
   332         -	| mipsisa32r2-* | mipsisa32r2el-* \
   333         -	| mipsisa64-* | mipsisa64el-* \
   334         -	| mipsisa64r2-* | mipsisa64r2el-* \
   335         -	| mipsisa64sb1-* | mipsisa64sb1el-* \
   336         -	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
   337         -	| mipstx39-* | mipstx39el-* \
   338         -	| mmix-* \
   339         -	| ms1-* \
   340         -	| msp430-* \
   341         -	| none-* | np1-* | ns16k-* | ns32k-* \
   342         -	| orion-* \
   343         -	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
   344         -	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
   345         -	| pyramid-* \
   346         -	| romp-* | rs6000-* \
   347         -	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
   348         -	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
   349         -	| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
   350         -	| sparclite-* \
   351         -	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
   352         -	| tahoe-* | thumb-* \
   353         -	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
   354         -	| tron-* \
   355         -	| v850-* | v850e-* | vax-* \
   356         -	| we32k-* \
   357         -	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
   358         -	| xstormy16-* | xtensa-* \
   359         -	| ymp-* \
   360         -	| z8k-*)
   361         -		;;
   362         -	m32c-*)
   363         -		;;
   364         -	# Recognize the various machine names and aliases which stand
   365         -	# for a CPU type and a company and sometimes even an OS.
   366         -	386bsd)
   367         -		basic_machine=i386-unknown
   368         -		os=-bsd
   369         -		;;
   370         -	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
   371         -		basic_machine=m68000-att
   372         -		;;
   373         -	3b*)
   374         -		basic_machine=we32k-att
   375         -		;;
   376         -	a29khif)
   377         -		basic_machine=a29k-amd
   378         -		os=-udi
   379         -		;;
   380         -    	abacus)
   381         -		basic_machine=abacus-unknown
   382         -		;;
   383         -	adobe68k)
   384         -		basic_machine=m68010-adobe
   385         -		os=-scout
   386         -		;;
   387         -	alliant | fx80)
   388         -		basic_machine=fx80-alliant
   389         -		;;
   390         -	altos | altos3068)
   391         -		basic_machine=m68k-altos
   392         -		;;
   393         -	am29k)
   394         -		basic_machine=a29k-none
   395         -		os=-bsd
   396         -		;;
   397         -	amd64)
   398         -		basic_machine=x86_64-pc
   399         -		;;
   400         -	amd64-*)
   401         -		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
   402         -		;;
   403         -	amdahl)
   404         -		basic_machine=580-amdahl
   405         -		os=-sysv
   406         -		;;
   407         -	amiga | amiga-*)
   408         -		basic_machine=m68k-unknown
   409         -		;;
   410         -	amigaos | amigados)
   411         -		basic_machine=m68k-unknown
   412         -		os=-amigaos
   413         -		;;
   414         -	amigaunix | amix)
   415         -		basic_machine=m68k-unknown
   416         -		os=-sysv4
   417         -		;;
   418         -	apollo68)
   419         -		basic_machine=m68k-apollo
   420         -		os=-sysv
   421         -		;;
   422         -	apollo68bsd)
   423         -		basic_machine=m68k-apollo
   424         -		os=-bsd
   425         -		;;
   426         -	aux)
   427         -		basic_machine=m68k-apple
   428         -		os=-aux
   429         -		;;
   430         -	balance)
   431         -		basic_machine=ns32k-sequent
   432         -		os=-dynix
   433         -		;;
   434         -	c90)
   435         -		basic_machine=c90-cray
   436         -		os=-unicos
   437         -		;;
   438         -	convex-c1)
   439         -		basic_machine=c1-convex
   440         -		os=-bsd
   441         -		;;
   442         -	convex-c2)
   443         -		basic_machine=c2-convex
   444         -		os=-bsd
   445         -		;;
   446         -	convex-c32)
   447         -		basic_machine=c32-convex
   448         -		os=-bsd
   449         -		;;
   450         -	convex-c34)
   451         -		basic_machine=c34-convex
   452         -		os=-bsd
   453         -		;;
   454         -	convex-c38)
   455         -		basic_machine=c38-convex
   456         -		os=-bsd
   457         -		;;
   458         -	cray | j90)
   459         -		basic_machine=j90-cray
   460         -		os=-unicos
   461         -		;;
   462         -	craynv)
   463         -		basic_machine=craynv-cray
   464         -		os=-unicosmp
   465         -		;;
   466         -	cr16c)
   467         -		basic_machine=cr16c-unknown
   468         -		os=-elf
   469         -		;;
   470         -	crds | unos)
   471         -		basic_machine=m68k-crds
   472         -		;;
   473         -	crisv32 | crisv32-* | etraxfs*)
   474         -		basic_machine=crisv32-axis
   475         -		;;
   476         -	cris | cris-* | etrax*)
   477         -		basic_machine=cris-axis
   478         -		;;
   479         -	crx)
   480         -		basic_machine=crx-unknown
   481         -		os=-elf
   482         -		;;
   483         -	da30 | da30-*)
   484         -		basic_machine=m68k-da30
   485         -		;;
   486         -	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
   487         -		basic_machine=mips-dec
   488         -		;;
   489         -	decsystem10* | dec10*)
   490         -		basic_machine=pdp10-dec
   491         -		os=-tops10
   492         -		;;
   493         -	decsystem20* | dec20*)
   494         -		basic_machine=pdp10-dec
   495         -		os=-tops20
   496         -		;;
   497         -	delta | 3300 | motorola-3300 | motorola-delta \
   498         -	      | 3300-motorola | delta-motorola)
   499         -		basic_machine=m68k-motorola
   500         -		;;
   501         -	delta88)
   502         -		basic_machine=m88k-motorola
   503         -		os=-sysv3
   504         -		;;
   505         -	djgpp)
   506         -		basic_machine=i586-pc
   507         -		os=-msdosdjgpp
   508         -		;;
   509         -	dpx20 | dpx20-*)
   510         -		basic_machine=rs6000-bull
   511         -		os=-bosx
   512         -		;;
   513         -	dpx2* | dpx2*-bull)
   514         -		basic_machine=m68k-bull
   515         -		os=-sysv3
   516         -		;;
   517         -	ebmon29k)
   518         -		basic_machine=a29k-amd
   519         -		os=-ebmon
   520         -		;;
   521         -	elxsi)
   522         -		basic_machine=elxsi-elxsi
   523         -		os=-bsd
   524         -		;;
   525         -	encore | umax | mmax)
   526         -		basic_machine=ns32k-encore
   527         -		;;
   528         -	es1800 | OSE68k | ose68k | ose | OSE)
   529         -		basic_machine=m68k-ericsson
   530         -		os=-ose
   531         -		;;
   532         -	fx2800)
   533         -		basic_machine=i860-alliant
   534         -		;;
   535         -	genix)
   536         -		basic_machine=ns32k-ns
   537         -		;;
   538         -	gmicro)
   539         -		basic_machine=tron-gmicro
   540         -		os=-sysv
   541         -		;;
   542         -	go32)
   543         -		basic_machine=i386-pc
   544         -		os=-go32
   545         -		;;
   546         -	h3050r* | hiux*)
   547         -		basic_machine=hppa1.1-hitachi
   548         -		os=-hiuxwe2
   549         -		;;
   550         -	h8300hms)
   551         -		basic_machine=h8300-hitachi
   552         -		os=-hms
   553         -		;;
   554         -	h8300xray)
   555         -		basic_machine=h8300-hitachi
   556         -		os=-xray
   557         -		;;
   558         -	h8500hms)
   559         -		basic_machine=h8500-hitachi
   560         -		os=-hms
   561         -		;;
   562         -	harris)
   563         -		basic_machine=m88k-harris
   564         -		os=-sysv3
   565         -		;;
   566         -	hp300-*)
   567         -		basic_machine=m68k-hp
   568         -		;;
   569         -	hp300bsd)
   570         -		basic_machine=m68k-hp
   571         -		os=-bsd
   572         -		;;
   573         -	hp300hpux)
   574         -		basic_machine=m68k-hp
   575         -		os=-hpux
   576         -		;;
   577         -	hp3k9[0-9][0-9] | hp9[0-9][0-9])
   578         -		basic_machine=hppa1.0-hp
   579         -		;;
   580         -	hp9k2[0-9][0-9] | hp9k31[0-9])
   581         -		basic_machine=m68000-hp
   582         -		;;
   583         -	hp9k3[2-9][0-9])
   584         -		basic_machine=m68k-hp
   585         -		;;
   586         -	hp9k6[0-9][0-9] | hp6[0-9][0-9])
   587         -		basic_machine=hppa1.0-hp
   588         -		;;
   589         -	hp9k7[0-79][0-9] | hp7[0-79][0-9])
   590         -		basic_machine=hppa1.1-hp
   591         -		;;
   592         -	hp9k78[0-9] | hp78[0-9])
   593         -		# FIXME: really hppa2.0-hp
   594         -		basic_machine=hppa1.1-hp
   595         -		;;
   596         -	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
   597         -		# FIXME: really hppa2.0-hp
   598         -		basic_machine=hppa1.1-hp
   599         -		;;
   600         -	hp9k8[0-9][13679] | hp8[0-9][13679])
   601         -		basic_machine=hppa1.1-hp
   602         -		;;
   603         -	hp9k8[0-9][0-9] | hp8[0-9][0-9])
   604         -		basic_machine=hppa1.0-hp
   605         -		;;
   606         -	hppa-next)
   607         -		os=-nextstep3
   608         -		;;
   609         -	hppaosf)
   610         -		basic_machine=hppa1.1-hp
   611         -		os=-osf
   612         -		;;
   613         -	hppro)
   614         -		basic_machine=hppa1.1-hp
   615         -		os=-proelf
   616         -		;;
   617         -	i370-ibm* | ibm*)
   618         -		basic_machine=i370-ibm
   619         -		;;
   620         -# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
   621         -	i*86v32)
   622         -		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
   623         -		os=-sysv32
   624         -		;;
   625         -	i*86v4*)
   626         -		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
   627         -		os=-sysv4
   628         -		;;
   629         -	i*86v)
   630         -		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
   631         -		os=-sysv
   632         -		;;
   633         -	i*86sol2)
   634         -		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
   635         -		os=-solaris2
   636         -		;;
   637         -	i386mach)
   638         -		basic_machine=i386-mach
   639         -		os=-mach
   640         -		;;
   641         -	i386-vsta | vsta)
   642         -		basic_machine=i386-unknown
   643         -		os=-vsta
   644         -		;;
   645         -	iris | iris4d)
   646         -		basic_machine=mips-sgi
   647         -		case $os in
   648         -		    -irix*)
   649         -			;;
   650         -		    *)
   651         -			os=-irix4
   652         -			;;
   653         -		esac
   654         -		;;
   655         -	isi68 | isi)
   656         -		basic_machine=m68k-isi
   657         -		os=-sysv
   658         -		;;
   659         -	m88k-omron*)
   660         -		basic_machine=m88k-omron
   661         -		;;
   662         -	magnum | m3230)
   663         -		basic_machine=mips-mips
   664         -		os=-sysv
   665         -		;;
   666         -	merlin)
   667         -		basic_machine=ns32k-utek
   668         -		os=-sysv
   669         -		;;
   670         -	mingw32)
   671         -		basic_machine=i386-pc
   672         -		os=-mingw32
   673         -		;;
   674         -	miniframe)
   675         -		basic_machine=m68000-convergent
   676         -		;;
   677         -	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
   678         -		basic_machine=m68k-atari
   679         -		os=-mint
   680         -		;;
   681         -	mips3*-*)
   682         -		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
   683         -		;;
   684         -	mips3*)
   685         -		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
   686         -		;;
   687         -	monitor)
   688         -		basic_machine=m68k-rom68k
   689         -		os=-coff
   690         -		;;
   691         -	morphos)
   692         -		basic_machine=powerpc-unknown
   693         -		os=-morphos
   694         -		;;
   695         -	msdos)
   696         -		basic_machine=i386-pc
   697         -		os=-msdos
   698         -		;;
   699         -	mvs)
   700         -		basic_machine=i370-ibm
   701         -		os=-mvs
   702         -		;;
   703         -	ncr3000)
   704         -		basic_machine=i486-ncr
   705         -		os=-sysv4
   706         -		;;
   707         -	netbsd386)
   708         -		basic_machine=i386-unknown
   709         -		os=-netbsd
   710         -		;;
   711         -	netwinder)
   712         -		basic_machine=armv4l-rebel
   713         -		os=-linux
   714         -		;;
   715         -	news | news700 | news800 | news900)
   716         -		basic_machine=m68k-sony
   717         -		os=-newsos
   718         -		;;
   719         -	news1000)
   720         -		basic_machine=m68030-sony
   721         -		os=-newsos
   722         -		;;
   723         -	news-3600 | risc-news)
   724         -		basic_machine=mips-sony
   725         -		os=-newsos
   726         -		;;
   727         -	necv70)
   728         -		basic_machine=v70-nec
   729         -		os=-sysv
   730         -		;;
   731         -	next | m*-next )
   732         -		basic_machine=m68k-next
   733         -		case $os in
   734         -		    -nextstep* )
   735         -			;;
   736         -		    -ns2*)
   737         -		      os=-nextstep2
   738         -			;;
   739         -		    *)
   740         -		      os=-nextstep3
   741         -			;;
   742         -		esac
   743         -		;;
   744         -	nh3000)
   745         -		basic_machine=m68k-harris
   746         -		os=-cxux
   747         -		;;
   748         -	nh[45]000)
   749         -		basic_machine=m88k-harris
   750         -		os=-cxux
   751         -		;;
   752         -	nindy960)
   753         -		basic_machine=i960-intel
   754         -		os=-nindy
   755         -		;;
   756         -	mon960)
   757         -		basic_machine=i960-intel
   758         -		os=-mon960
   759         -		;;
   760         -	nonstopux)
   761         -		basic_machine=mips-compaq
   762         -		os=-nonstopux
   763         -		;;
   764         -	np1)
   765         -		basic_machine=np1-gould
   766         -		;;
   767         -	nsr-tandem)
   768         -		basic_machine=nsr-tandem
   769         -		;;
   770         -	op50n-* | op60c-*)
   771         -		basic_machine=hppa1.1-oki
   772         -		os=-proelf
   773         -		;;
   774         -	openrisc | openrisc-*)
   775         -		basic_machine=or32-unknown
   776         -		;;
   777         -	os400)
   778         -		basic_machine=powerpc-ibm
   779         -		os=-os400
   780         -		;;
   781         -	OSE68000 | ose68000)
   782         -		basic_machine=m68000-ericsson
   783         -		os=-ose
   784         -		;;
   785         -	os68k)
   786         -		basic_machine=m68k-none
   787         -		os=-os68k
   788         -		;;
   789         -	pa-hitachi)
   790         -		basic_machine=hppa1.1-hitachi
   791         -		os=-hiuxwe2
   792         -		;;
   793         -	paragon)
   794         -		basic_machine=i860-intel
   795         -		os=-osf
   796         -		;;
   797         -	pbd)
   798         -		basic_machine=sparc-tti
   799         -		;;
   800         -	pbb)
   801         -		basic_machine=m68k-tti
   802         -		;;
   803         -	pc532 | pc532-*)
   804         -		basic_machine=ns32k-pc532
   805         -		;;
   806         -	pentium | p5 | k5 | k6 | nexgen | viac3)
   807         -		basic_machine=i586-pc
   808         -		;;
   809         -	pentiumpro | p6 | 6x86 | athlon | athlon_*)
   810         -		basic_machine=i686-pc
   811         -		;;
   812         -	pentiumii | pentium2 | pentiumiii | pentium3)
   813         -		basic_machine=i686-pc
   814         -		;;
   815         -	pentium4)
   816         -		basic_machine=i786-pc
   817         -		;;
   818         -	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
   819         -		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
   820         -		;;
   821         -	pentiumpro-* | p6-* | 6x86-* | athlon-*)
   822         -		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
   823         -		;;
   824         -	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
   825         -		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
   826         -		;;
   827         -	pentium4-*)
   828         -		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
   829         -		;;
   830         -	pn)
   831         -		basic_machine=pn-gould
   832         -		;;
   833         -	power)	basic_machine=power-ibm
   834         -		;;
   835         -	ppc)	basic_machine=powerpc-unknown
   836         -		;;
   837         -	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
   838         -		;;
   839         -	ppcle | powerpclittle | ppc-le | powerpc-little)
   840         -		basic_machine=powerpcle-unknown
   841         -		;;
   842         -	ppcle-* | powerpclittle-*)
   843         -		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
   844         -		;;
   845         -	ppc64)	basic_machine=powerpc64-unknown
   846         -		;;
   847         -	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
   848         -		;;
   849         -	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
   850         -		basic_machine=powerpc64le-unknown
   851         -		;;
   852         -	ppc64le-* | powerpc64little-*)
   853         -		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
   854         -		;;
   855         -	ps2)
   856         -		basic_machine=i386-ibm
   857         -		;;
   858         -	pw32)
   859         -		basic_machine=i586-unknown
   860         -		os=-pw32
   861         -		;;
   862         -	rom68k)
   863         -		basic_machine=m68k-rom68k
   864         -		os=-coff
   865         -		;;
   866         -	rm[46]00)
   867         -		basic_machine=mips-siemens
   868         -		;;
   869         -	rtpc | rtpc-*)
   870         -		basic_machine=romp-ibm
   871         -		;;
   872         -	s390 | s390-*)
   873         -		basic_machine=s390-ibm
   874         -		;;
   875         -	s390x | s390x-*)
   876         -		basic_machine=s390x-ibm
   877         -		;;
   878         -	sa29200)
   879         -		basic_machine=a29k-amd
   880         -		os=-udi
   881         -		;;
   882         -	sb1)
   883         -		basic_machine=mipsisa64sb1-unknown
   884         -		;;
   885         -	sb1el)
   886         -		basic_machine=mipsisa64sb1el-unknown
   887         -		;;
   888         -	sei)
   889         -		basic_machine=mips-sei
   890         -		os=-seiux
   891         -		;;
   892         -	sequent)
   893         -		basic_machine=i386-sequent
   894         -		;;
   895         -	sh)
   896         -		basic_machine=sh-hitachi
   897         -		os=-hms
   898         -		;;
   899         -	sh64)
   900         -		basic_machine=sh64-unknown
   901         -		;;
   902         -	sparclite-wrs | simso-wrs)
   903         -		basic_machine=sparclite-wrs
   904         -		os=-vxworks
   905         -		;;
   906         -	sps7)
   907         -		basic_machine=m68k-bull
   908         -		os=-sysv2
   909         -		;;
   910         -	spur)
   911         -		basic_machine=spur-unknown
   912         -		;;
   913         -	st2000)
   914         -		basic_machine=m68k-tandem
   915         -		;;
   916         -	stratus)
   917         -		basic_machine=i860-stratus
   918         -		os=-sysv4
   919         -		;;
   920         -	sun2)
   921         -		basic_machine=m68000-sun
   922         -		;;
   923         -	sun2os3)
   924         -		basic_machine=m68000-sun
   925         -		os=-sunos3
   926         -		;;
   927         -	sun2os4)
   928         -		basic_machine=m68000-sun
   929         -		os=-sunos4
   930         -		;;
   931         -	sun3os3)
   932         -		basic_machine=m68k-sun
   933         -		os=-sunos3
   934         -		;;
   935         -	sun3os4)
   936         -		basic_machine=m68k-sun
   937         -		os=-sunos4
   938         -		;;
   939         -	sun4os3)
   940         -		basic_machine=sparc-sun
   941         -		os=-sunos3
   942         -		;;
   943         -	sun4os4)
   944         -		basic_machine=sparc-sun
   945         -		os=-sunos4
   946         -		;;
   947         -	sun4sol2)
   948         -		basic_machine=sparc-sun
   949         -		os=-solaris2
   950         -		;;
   951         -	sun3 | sun3-*)
   952         -		basic_machine=m68k-sun
   953         -		;;
   954         -	sun4)
   955         -		basic_machine=sparc-sun
   956         -		;;
   957         -	sun386 | sun386i | roadrunner)
   958         -		basic_machine=i386-sun
   959         -		;;
   960         -	sv1)
   961         -		basic_machine=sv1-cray
   962         -		os=-unicos
   963         -		;;
   964         -	symmetry)
   965         -		basic_machine=i386-sequent
   966         -		os=-dynix
   967         -		;;
   968         -	t3e)
   969         -		basic_machine=alphaev5-cray
   970         -		os=-unicos
   971         -		;;
   972         -	t90)
   973         -		basic_machine=t90-cray
   974         -		os=-unicos
   975         -		;;
   976         -	tic54x | c54x*)
   977         -		basic_machine=tic54x-unknown
   978         -		os=-coff
   979         -		;;
   980         -	tic55x | c55x*)
   981         -		basic_machine=tic55x-unknown
   982         -		os=-coff
   983         -		;;
   984         -	tic6x | c6x*)
   985         -		basic_machine=tic6x-unknown
   986         -		os=-coff
   987         -		;;
   988         -	tx39)
   989         -		basic_machine=mipstx39-unknown
   990         -		;;
   991         -	tx39el)
   992         -		basic_machine=mipstx39el-unknown
   993         -		;;
   994         -	toad1)
   995         -		basic_machine=pdp10-xkl
   996         -		os=-tops20
   997         -		;;
   998         -	tower | tower-32)
   999         -		basic_machine=m68k-ncr
  1000         -		;;
  1001         -	tpf)
  1002         -		basic_machine=s390x-ibm
  1003         -		os=-tpf
  1004         -		;;
  1005         -	udi29k)
  1006         -		basic_machine=a29k-amd
  1007         -		os=-udi
  1008         -		;;
  1009         -	ultra3)
  1010         -		basic_machine=a29k-nyu
  1011         -		os=-sym1
  1012         -		;;
  1013         -	v810 | necv810)
  1014         -		basic_machine=v810-nec
  1015         -		os=-none
  1016         -		;;
  1017         -	vaxv)
  1018         -		basic_machine=vax-dec
  1019         -		os=-sysv
  1020         -		;;
  1021         -	vms)
  1022         -		basic_machine=vax-dec
  1023         -		os=-vms
  1024         -		;;
  1025         -	vpp*|vx|vx-*)
  1026         -		basic_machine=f301-fujitsu
  1027         -		;;
  1028         -	vxworks960)
  1029         -		basic_machine=i960-wrs
  1030         -		os=-vxworks
  1031         -		;;
  1032         -	vxworks68)
  1033         -		basic_machine=m68k-wrs
  1034         -		os=-vxworks
  1035         -		;;
  1036         -	vxworks29k)
  1037         -		basic_machine=a29k-wrs
  1038         -		os=-vxworks
  1039         -		;;
  1040         -	w65*)
  1041         -		basic_machine=w65-wdc
  1042         -		os=-none
  1043         -		;;
  1044         -	w89k-*)
  1045         -		basic_machine=hppa1.1-winbond
  1046         -		os=-proelf
  1047         -		;;
  1048         -	xbox)
  1049         -		basic_machine=i686-pc
  1050         -		os=-mingw32
  1051         -		;;
  1052         -	xps | xps100)
  1053         -		basic_machine=xps100-honeywell
  1054         -		;;
  1055         -	ymp)
  1056         -		basic_machine=ymp-cray
  1057         -		os=-unicos
  1058         -		;;
  1059         -	z8k-*-coff)
  1060         -		basic_machine=z8k-unknown
  1061         -		os=-sim
  1062         -		;;
  1063         -	none)
  1064         -		basic_machine=none-none
  1065         -		os=-none
  1066         -		;;
  1067         -
  1068         -# Here we handle the default manufacturer of certain CPU types.  It is in
  1069         -# some cases the only manufacturer, in others, it is the most popular.
  1070         -	w89k)
  1071         -		basic_machine=hppa1.1-winbond
  1072         -		;;
  1073         -	op50n)
  1074         -		basic_machine=hppa1.1-oki
  1075         -		;;
  1076         -	op60c)
  1077         -		basic_machine=hppa1.1-oki
  1078         -		;;
  1079         -	romp)
  1080         -		basic_machine=romp-ibm
  1081         -		;;
  1082         -	mmix)
  1083         -		basic_machine=mmix-knuth
  1084         -		;;
  1085         -	rs6000)
  1086         -		basic_machine=rs6000-ibm
  1087         -		;;
  1088         -	vax)
  1089         -		basic_machine=vax-dec
  1090         -		;;
  1091         -	pdp10)
  1092         -		# there are many clones, so DEC is not a safe bet
  1093         -		basic_machine=pdp10-unknown
  1094         -		;;
  1095         -	pdp11)
  1096         -		basic_machine=pdp11-dec
  1097         -		;;
  1098         -	we32k)
  1099         -		basic_machine=we32k-att
  1100         -		;;
  1101         -	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
  1102         -		basic_machine=sh-unknown
  1103         -		;;
  1104         -	sparc | sparcv8 | sparcv9 | sparcv9b)
  1105         -		basic_machine=sparc-sun
  1106         -		;;
  1107         -	cydra)
  1108         -		basic_machine=cydra-cydrome
  1109         -		;;
  1110         -	orion)
  1111         -		basic_machine=orion-highlevel
  1112         -		;;
  1113         -	orion105)
  1114         -		basic_machine=clipper-highlevel
  1115         -		;;
  1116         -	mac | mpw | mac-mpw)
  1117         -		basic_machine=m68k-apple
  1118         -		;;
  1119         -	pmac | pmac-mpw)
  1120         -		basic_machine=powerpc-apple
  1121         -		;;
  1122         -	*-unknown)
  1123         -		# Make sure to match an already-canonicalized machine name.
  1124         -		;;
  1125         -	*)
  1126         -		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
  1127         -		exit 1
  1128         -		;;
  1129         -esac
  1130         -
  1131         -# Here we canonicalize certain aliases for manufacturers.
  1132         -case $basic_machine in
  1133         -	*-digital*)
  1134         -		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
  1135         -		;;
  1136         -	*-commodore*)
  1137         -		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
  1138         -		;;
  1139         -	*)
  1140         -		;;
  1141         -esac
  1142         -
  1143         -# Decode manufacturer-specific aliases for certain operating systems.
  1144         -
  1145         -if [ x"$os" != x"" ]
  1146         -then
  1147         -case $os in
  1148         -        # First match some system type aliases
  1149         -        # that might get confused with valid system types.
  1150         -	# -solaris* is a basic system type, with this one exception.
  1151         -	-solaris1 | -solaris1.*)
  1152         -		os=`echo $os | sed -e 's|solaris1|sunos4|'`
  1153         -		;;
  1154         -	-solaris)
  1155         -		os=-solaris2
  1156         -		;;
  1157         -	-svr4*)
  1158         -		os=-sysv4
  1159         -		;;
  1160         -	-unixware*)
  1161         -		os=-sysv4.2uw
  1162         -		;;
  1163         -	-gnu/linux*)
  1164         -		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
  1165         -		;;
  1166         -	# First accept the basic system types.
  1167         -	# The portable systems comes first.
  1168         -	# Each alternative MUST END IN A *, to match a version number.
  1169         -	# -sysv* is not here because it comes later, after sysvr4.
  1170         -	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
  1171         -	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
  1172         -	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
  1173         -	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
  1174         -	      | -aos* \
  1175         -	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
  1176         -	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
  1177         -	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
  1178         -	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
  1179         -	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
  1180         -	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
  1181         -	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
  1182         -	      | -chorusos* | -chorusrdb* \
  1183         -	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
  1184         -	      | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
  1185         -	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
  1186         -	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
  1187         -	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
  1188         -	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
  1189         -	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
  1190         -	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
  1191         -	      | -skyos* | -haiku*)
  1192         -	# Remember, each alternative MUST END IN *, to match a version number.
  1193         -		;;
  1194         -	-qnx*)
  1195         -		case $basic_machine in
  1196         -		    x86-* | i*86-*)
  1197         -			;;
  1198         -		    *)
  1199         -			os=-nto$os
  1200         -			;;
  1201         -		esac
  1202         -		;;
  1203         -	-nto-qnx*)
  1204         -		;;
  1205         -	-nto*)
  1206         -		os=`echo $os | sed -e 's|nto|nto-qnx|'`
  1207         -		;;
  1208         -	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
  1209         -	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
  1210         -	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
  1211         -		;;
  1212         -	-mac*)
  1213         -		os=`echo $os | sed -e 's|mac|macos|'`
  1214         -		;;
  1215         -	-linux-dietlibc)
  1216         -		os=-linux-dietlibc
  1217         -		;;
  1218         -	-linux*)
  1219         -		os=`echo $os | sed -e 's|linux|linux-gnu|'`
  1220         -		;;
  1221         -	-sunos5*)
  1222         -		os=`echo $os | sed -e 's|sunos5|solaris2|'`
  1223         -		;;
  1224         -	-sunos6*)
  1225         -		os=`echo $os | sed -e 's|sunos6|solaris3|'`
  1226         -		;;
  1227         -	-opened*)
  1228         -		os=-openedition
  1229         -		;;
  1230         -        -os400*)
  1231         -		os=-os400
  1232         -		;;
  1233         -	-wince*)
  1234         -		os=-wince
  1235         -		;;
  1236         -	-osfrose*)
  1237         -		os=-osfrose
  1238         -		;;
  1239         -	-osf*)
  1240         -		os=-osf
  1241         -		;;
  1242         -	-utek*)
  1243         -		os=-bsd
  1244         -		;;
  1245         -	-dynix*)
  1246         -		os=-bsd
  1247         -		;;
  1248         -	-acis*)
  1249         -		os=-aos
  1250         -		;;
  1251         -	-atheos*)
  1252         -		os=-atheos
  1253         -		;;
  1254         -	-syllable*)
  1255         -		os=-syllable
  1256         -		;;
  1257         -	-386bsd)
  1258         -		os=-bsd
  1259         -		;;
  1260         -	-ctix* | -uts*)
  1261         -		os=-sysv
  1262         -		;;
  1263         -	-nova*)
  1264         -		os=-rtmk-nova
  1265         -		;;
  1266         -	-ns2 )
  1267         -		os=-nextstep2
  1268         -		;;
  1269         -	-nsk*)
  1270         -		os=-nsk
  1271         -		;;
  1272         -	# Preserve the version number of sinix5.
  1273         -	-sinix5.*)
  1274         -		os=`echo $os | sed -e 's|sinix|sysv|'`
  1275         -		;;
  1276         -	-sinix*)
  1277         -		os=-sysv4
  1278         -		;;
  1279         -        -tpf*)
  1280         -		os=-tpf
  1281         -		;;
  1282         -	-triton*)
  1283         -		os=-sysv3
  1284         -		;;
  1285         -	-oss*)
  1286         -		os=-sysv3
  1287         -		;;
  1288         -	-svr4)
  1289         -		os=-sysv4
  1290         -		;;
  1291         -	-svr3)
  1292         -		os=-sysv3
  1293         -		;;
  1294         -	-sysvr4)
  1295         -		os=-sysv4
  1296         -		;;
  1297         -	# This must come after -sysvr4.
  1298         -	-sysv*)
  1299         -		;;
  1300         -	-ose*)
  1301         -		os=-ose
  1302         -		;;
  1303         -	-es1800*)
  1304         -		os=-ose
  1305         -		;;
  1306         -	-xenix)
  1307         -		os=-xenix
  1308         -		;;
  1309         -	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
  1310         -		os=-mint
  1311         -		;;
  1312         -	-aros*)
  1313         -		os=-aros
  1314         -		;;
  1315         -	-kaos*)
  1316         -		os=-kaos
  1317         -		;;
  1318         -	-zvmoe)
  1319         -		os=-zvmoe
  1320         -		;;
  1321         -	-none)
  1322         -		;;
  1323         -	*)
  1324         -		# Get rid of the `-' at the beginning of $os.
  1325         -		os=`echo $os | sed 's/[^-]*-//'`
  1326         -		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
  1327         -		exit 1
  1328         -		;;
  1329         -esac
  1330         -else
  1331         -
  1332         -# Here we handle the default operating systems that come with various machines.
  1333         -# The value should be what the vendor currently ships out the door with their
  1334         -# machine or put another way, the most popular os provided with the machine.
  1335         -
  1336         -# Note that if you're going to try to match "-MANUFACTURER" here (say,
  1337         -# "-sun"), then you have to tell the case statement up towards the top
  1338         -# that MANUFACTURER isn't an operating system.  Otherwise, code above
  1339         -# will signal an error saying that MANUFACTURER isn't an operating
  1340         -# system, and we'll never get to this point.
  1341         -
  1342         -case $basic_machine in
  1343         -	*-acorn)
  1344         -		os=-riscix1.2
  1345         -		;;
  1346         -	arm*-rebel)
  1347         -		os=-linux
  1348         -		;;
  1349         -	arm*-semi)
  1350         -		os=-aout
  1351         -		;;
  1352         -    c4x-* | tic4x-*)
  1353         -        os=-coff
  1354         -        ;;
  1355         -	# This must come before the *-dec entry.
  1356         -	pdp10-*)
  1357         -		os=-tops20
  1358         -		;;
  1359         -	pdp11-*)
  1360         -		os=-none
  1361         -		;;
  1362         -	*-dec | vax-*)
  1363         -		os=-ultrix4.2
  1364         -		;;
  1365         -	m68*-apollo)
  1366         -		os=-domain
  1367         -		;;
  1368         -	i386-sun)
  1369         -		os=-sunos4.0.2
  1370         -		;;
  1371         -	m68000-sun)
  1372         -		os=-sunos3
  1373         -		# This also exists in the configure program, but was not the
  1374         -		# default.
  1375         -		# os=-sunos4
  1376         -		;;
  1377         -	m68*-cisco)
  1378         -		os=-aout
  1379         -		;;
  1380         -	mips*-cisco)
  1381         -		os=-elf
  1382         -		;;
  1383         -	mips*-*)
  1384         -		os=-elf
  1385         -		;;
  1386         -	or32-*)
  1387         -		os=-coff
  1388         -		;;
  1389         -	*-tti)	# must be before sparc entry or we get the wrong os.
  1390         -		os=-sysv3
  1391         -		;;
  1392         -	sparc-* | *-sun)
  1393         -		os=-sunos4.1.1
  1394         -		;;
  1395         -	*-be)
  1396         -		os=-beos
  1397         -		;;
  1398         -	*-haiku)
  1399         -		os=-haiku
  1400         -		;;
  1401         -	*-ibm)
  1402         -		os=-aix
  1403         -		;;
  1404         -    	*-knuth)
  1405         -		os=-mmixware
  1406         -		;;
  1407         -	*-wec)
  1408         -		os=-proelf
  1409         -		;;
  1410         -	*-winbond)
  1411         -		os=-proelf
  1412         -		;;
  1413         -	*-oki)
  1414         -		os=-proelf
  1415         -		;;
  1416         -	*-hp)
  1417         -		os=-hpux
  1418         -		;;
  1419         -	*-hitachi)
  1420         -		os=-hiux
  1421         -		;;
  1422         -	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
  1423         -		os=-sysv
  1424         -		;;
  1425         -	*-cbm)
  1426         -		os=-amigaos
  1427         -		;;
  1428         -	*-dg)
  1429         -		os=-dgux
  1430         -		;;
  1431         -	*-dolphin)
  1432         -		os=-sysv3
  1433         -		;;
  1434         -	m68k-ccur)
  1435         -		os=-rtu
  1436         -		;;
  1437         -	m88k-omron*)
  1438         -		os=-luna
  1439         -		;;
  1440         -	*-next )
  1441         -		os=-nextstep
  1442         -		;;
  1443         -	*-sequent)
  1444         -		os=-ptx
  1445         -		;;
  1446         -	*-crds)
  1447         -		os=-unos
  1448         -		;;
  1449         -	*-ns)
  1450         -		os=-genix
  1451         -		;;
  1452         -	i370-*)
  1453         -		os=-mvs
  1454         -		;;
  1455         -	*-next)
  1456         -		os=-nextstep3
  1457         -		;;
  1458         -	*-gould)
  1459         -		os=-sysv
  1460         -		;;
  1461         -	*-highlevel)
  1462         -		os=-bsd
  1463         -		;;
  1464         -	*-encore)
  1465         -		os=-bsd
  1466         -		;;
  1467         -	*-sgi)
  1468         -		os=-irix
  1469         -		;;
  1470         -	*-siemens)
  1471         -		os=-sysv4
  1472         -		;;
  1473         -	*-masscomp)
  1474         -		os=-rtu
  1475         -		;;
  1476         -	f30[01]-fujitsu | f700-fujitsu)
  1477         -		os=-uxpv
  1478         -		;;
  1479         -	*-rom68k)
  1480         -		os=-coff
  1481         -		;;
  1482         -	*-*bug)
  1483         -		os=-coff
  1484         -		;;
  1485         -	*-apple)
  1486         -		os=-macos
  1487         -		;;
  1488         -	*-atari*)
  1489         -		os=-mint
  1490         -		;;
  1491         -	*)
  1492         -		os=-none
  1493         -		;;
  1494         -esac
  1495         -fi
  1496         -
  1497         -# Here we handle the case where we know the os, and the CPU type, but not the
  1498         -# manufacturer.  We pick the logical manufacturer.
  1499         -vendor=unknown
  1500         -case $basic_machine in
  1501         -	*-unknown)
  1502         -		case $os in
  1503         -			-riscix*)
  1504         -				vendor=acorn
  1505         -				;;
  1506         -			-sunos*)
  1507         -				vendor=sun
  1508         -				;;
  1509         -			-aix*)
  1510         -				vendor=ibm
  1511         -				;;
  1512         -			-beos*)
  1513         -				vendor=be
  1514         -				;;
  1515         -			-hpux*)
  1516         -				vendor=hp
  1517         -				;;
  1518         -			-mpeix*)
  1519         -				vendor=hp
  1520         -				;;
  1521         -			-hiux*)
  1522         -				vendor=hitachi
  1523         -				;;
  1524         -			-unos*)
  1525         -				vendor=crds
  1526         -				;;
  1527         -			-dgux*)
  1528         -				vendor=dg
  1529         -				;;
  1530         -			-luna*)
  1531         -				vendor=omron
  1532         -				;;
  1533         -			-genix*)
  1534         -				vendor=ns
  1535         -				;;
  1536         -			-mvs* | -opened*)
  1537         -				vendor=ibm
  1538         -				;;
  1539         -			-os400*)
  1540         -				vendor=ibm
  1541         -				;;
  1542         -			-ptx*)
  1543         -				vendor=sequent
  1544         -				;;
  1545         -			-tpf*)
  1546         -				vendor=ibm
  1547         -				;;
  1548         -			-vxsim* | -vxworks* | -windiss*)
  1549         -				vendor=wrs
  1550         -				;;
  1551         -			-aux*)
  1552         -				vendor=apple
  1553         -				;;
  1554         -			-hms*)
  1555         -				vendor=hitachi
  1556         -				;;
  1557         -			-mpw* | -macos*)
  1558         -				vendor=apple
  1559         -				;;
  1560         -			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
  1561         -				vendor=atari
  1562         -				;;
  1563         -			-vos*)
  1564         -				vendor=stratus
  1565         -				;;
  1566         -		esac
  1567         -		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
  1568         -		;;
  1569         -esac
  1570         -
  1571         -echo $basic_machine$os
  1572         -exit
  1573         -
  1574         -# Local variables:
  1575         -# eval: (add-hook 'write-file-hooks 'time-stamp)
  1576         -# time-stamp-start: "timestamp='"
  1577         -# time-stamp-format: "%:y-%02m-%02d"
  1578         -# time-stamp-end: "'"
  1579         -# End:

Deleted kitdll/buildsrc/kitdll-0.0/configure.ac version [ae66df7b9e].

     1         -dnl What are we running
     2         -AC_INIT(kitdll, 0.0)
     3         -
     4         -dnl Checks for programs.
     5         -AC_PROG_CC
     6         -AC_PROG_MAKE_SET
     7         -AC_PROG_INSTALL
     8         -AC_AIX
     9         -AC_GNU_SOURCE
    10         -
    11         -dnl Determine system information
    12         -DC_CHK_OS_INFO
    13         -
    14         -dnl Find the appropriate libraries to link to
    15         -AC_SEARCH_LIBS(acos, m,, [ AC_MSG_WARN([Couldn't find acos (normally in libm)!]) ])
    16         -AC_SEARCH_LIBS(dlsym, dl,, [ AC_MSG_WARN([Couldn't find dlsym (normally in libdl)!]) ])
    17         -
    18         -dnl Determine how to create a shared object
    19         -DC_GET_SHOBJFLAGS
    20         -
    21         -dnl Find the appropriate Tcl headers and libraries
    22         -DC_DO_TCL
    23         -
    24         -dnl Find required libs
    25         -DC_FIND_TCLKIT_LIBS
    26         -
    27         -dnl Check for Tcl features
    28         -SAVE_LIBS="${LIBS}"
    29         -LIBS="${ARCHS} ${LIBS}"
    30         -dnl Check for the ability to get the current system encoding
    31         -AC_CHECK_FUNCS(Tcl_GetEncodingNameFromEnvironment Tcl_SetSystemEncoding)
    32         -LIBS="${SAVE_LIBS}"
    33         -
    34         -dnl Find extra objects we need to link as a part of "libtclkit"
    35         -AC_SUBST(EXTRA_OBJS)
    36         -
    37         -dnl Check for optional headers
    38         -AC_HEADER_STDC
    39         -AC_CHECK_HEADERS(unistd.h string.h strings.h)
    40         -
    41         -dnl Check for optional system calls
    42         -AC_CHECK_FUNCS(readlink)
    43         -
    44         -dnl Check for acceptable dladdr so we can find ourselves on UNIX
    45         -DC_CHECK_FOR_ACCEPTABLE_DLADDR
    46         -
    47         -dnl Produce output
    48         -AC_OUTPUT(Makefile)

Deleted kitdll/buildsrc/kitdll-0.0/install-sh version [82b003ed45].

     1         -#!/bin/sh
     2         -# install - install a program, script, or datafile
     3         -
     4         -scriptversion=2005-05-14.22
     5         -
     6         -# This originates from X11R5 (mit/util/scripts/install.sh), which was
     7         -# later released in X11R6 (xc/config/util/install.sh) with the
     8         -# following copyright and license.
     9         -#
    10         -# Copyright (C) 1994 X Consortium
    11         -#
    12         -# Permission is hereby granted, free of charge, to any person obtaining a copy
    13         -# of this software and associated documentation files (the "Software"), to
    14         -# deal in the Software without restriction, including without limitation the
    15         -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
    16         -# sell copies of the Software, and to permit persons to whom the Software is
    17         -# furnished to do so, subject to the following conditions:
    18         -#
    19         -# The above copyright notice and this permission notice shall be included in
    20         -# all copies or substantial portions of the Software.
    21         -#
    22         -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    23         -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    24         -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
    25         -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
    26         -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
    27         -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    28         -#
    29         -# Except as contained in this notice, the name of the X Consortium shall not
    30         -# be used in advertising or otherwise to promote the sale, use or other deal-
    31         -# ings in this Software without prior written authorization from the X Consor-
    32         -# tium.
    33         -#
    34         -#
    35         -# FSF changes to this file are in the public domain.
    36         -#
    37         -# Calling this script install-sh is preferred over install.sh, to prevent
    38         -# `make' implicit rules from creating a file called install from it
    39         -# when there is no Makefile.
    40         -#
    41         -# This script is compatible with the BSD install script, but was written
    42         -# from scratch.  It can only install one file at a time, a restriction
    43         -# shared with many OS's install programs.
    44         -
    45         -# set DOITPROG to echo to test this script
    46         -
    47         -# Don't use :- since 4.3BSD and earlier shells don't like it.
    48         -doit="${DOITPROG-}"
    49         -
    50         -# put in absolute paths if you don't have them in your path; or use env. vars.
    51         -
    52         -mvprog="${MVPROG-mv}"
    53         -cpprog="${CPPROG-cp}"
    54         -chmodprog="${CHMODPROG-chmod}"
    55         -chownprog="${CHOWNPROG-chown}"
    56         -chgrpprog="${CHGRPPROG-chgrp}"
    57         -stripprog="${STRIPPROG-strip}"
    58         -rmprog="${RMPROG-rm}"
    59         -mkdirprog="${MKDIRPROG-mkdir}"
    60         -
    61         -chmodcmd="$chmodprog 0755"
    62         -chowncmd=
    63         -chgrpcmd=
    64         -stripcmd=
    65         -rmcmd="$rmprog -f"
    66         -mvcmd="$mvprog"
    67         -src=
    68         -dst=
    69         -dir_arg=
    70         -dstarg=
    71         -no_target_directory=
    72         -
    73         -usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
    74         -   or: $0 [OPTION]... SRCFILES... DIRECTORY
    75         -   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
    76         -   or: $0 [OPTION]... -d DIRECTORIES...
    77         -
    78         -In the 1st form, copy SRCFILE to DSTFILE.
    79         -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
    80         -In the 4th, create DIRECTORIES.
    81         -
    82         -Options:
    83         --c         (ignored)
    84         --d         create directories instead of installing files.
    85         --g GROUP   $chgrpprog installed files to GROUP.
    86         --m MODE    $chmodprog installed files to MODE.
    87         --o USER    $chownprog installed files to USER.
    88         --s         $stripprog installed files.
    89         --t DIRECTORY  install into DIRECTORY.
    90         --T         report an error if DSTFILE is a directory.
    91         ---help     display this help and exit.
    92         ---version  display version info and exit.
    93         -
    94         -Environment variables override the default commands:
    95         -  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
    96         -"
    97         -
    98         -while test -n "$1"; do
    99         -  case $1 in
   100         -    -c) shift
   101         -        continue;;
   102         -
   103         -    -d) dir_arg=true
   104         -        shift
   105         -        continue;;
   106         -
   107         -    -g) chgrpcmd="$chgrpprog $2"
   108         -        shift
   109         -        shift
   110         -        continue;;
   111         -
   112         -    --help) echo "$usage"; exit $?;;
   113         -
   114         -    -m) chmodcmd="$chmodprog $2"
   115         -        shift
   116         -        shift
   117         -        continue;;
   118         -
   119         -    -o) chowncmd="$chownprog $2"
   120         -        shift
   121         -        shift
   122         -        continue;;
   123         -
   124         -    -s) stripcmd=$stripprog
   125         -        shift
   126         -        continue;;
   127         -
   128         -    -t) dstarg=$2
   129         -	shift
   130         -	shift
   131         -	continue;;
   132         -
   133         -    -T) no_target_directory=true
   134         -	shift
   135         -	continue;;
   136         -
   137         -    --version) echo "$0 $scriptversion"; exit $?;;
   138         -
   139         -    *)  # When -d is used, all remaining arguments are directories to create.
   140         -	# When -t is used, the destination is already specified.
   141         -	test -n "$dir_arg$dstarg" && break
   142         -        # Otherwise, the last argument is the destination.  Remove it from $@.
   143         -	for arg
   144         -	do
   145         -          if test -n "$dstarg"; then
   146         -	    # $@ is not empty: it contains at least $arg.
   147         -	    set fnord "$@" "$dstarg"
   148         -	    shift # fnord
   149         -	  fi
   150         -	  shift # arg
   151         -	  dstarg=$arg
   152         -	done
   153         -	break;;
   154         -  esac
   155         -done
   156         -
   157         -if test -z "$1"; then
   158         -  if test -z "$dir_arg"; then
   159         -    echo "$0: no input file specified." >&2
   160         -    exit 1
   161         -  fi
   162         -  # It's OK to call `install-sh -d' without argument.
   163         -  # This can happen when creating conditional directories.
   164         -  exit 0
   165         -fi
   166         -
   167         -for src
   168         -do
   169         -  # Protect names starting with `-'.
   170         -  case $src in
   171         -    -*) src=./$src ;;
   172         -  esac
   173         -
   174         -  if test -n "$dir_arg"; then
   175         -    dst=$src
   176         -    src=
   177         -
   178         -    if test -d "$dst"; then
   179         -      mkdircmd=:
   180         -      chmodcmd=
   181         -    else
   182         -      mkdircmd=$mkdirprog
   183         -    fi
   184         -  else
   185         -    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
   186         -    # might cause directories to be created, which would be especially bad
   187         -    # if $src (and thus $dsttmp) contains '*'.
   188         -    if test ! -f "$src" && test ! -d "$src"; then
   189         -      echo "$0: $src does not exist." >&2
   190         -      exit 1
   191         -    fi
   192         -
   193         -    if test -z "$dstarg"; then
   194         -      echo "$0: no destination specified." >&2
   195         -      exit 1
   196         -    fi
   197         -
   198         -    dst=$dstarg
   199         -    # Protect names starting with `-'.
   200         -    case $dst in
   201         -      -*) dst=./$dst ;;
   202         -    esac
   203         -
   204         -    # If destination is a directory, append the input filename; won't work
   205         -    # if double slashes aren't ignored.
   206         -    if test -d "$dst"; then
   207         -      if test -n "$no_target_directory"; then
   208         -	echo "$0: $dstarg: Is a directory" >&2
   209         -	exit 1
   210         -      fi
   211         -      dst=$dst/`basename "$src"`
   212         -    fi
   213         -  fi
   214         -
   215         -  # This sed command emulates the dirname command.
   216         -  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
   217         -
   218         -  # Make sure that the destination directory exists.
   219         -
   220         -  # Skip lots of stat calls in the usual case.
   221         -  if test ! -d "$dstdir"; then
   222         -    defaultIFS='
   223         -	 '
   224         -    IFS="${IFS-$defaultIFS}"
   225         -
   226         -    oIFS=$IFS
   227         -    # Some sh's can't handle IFS=/ for some reason.
   228         -    IFS='%'
   229         -    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
   230         -    shift
   231         -    IFS=$oIFS
   232         -
   233         -    pathcomp=
   234         -
   235         -    while test $# -ne 0 ; do
   236         -      pathcomp=$pathcomp$1
   237         -      shift
   238         -      if test ! -d "$pathcomp"; then
   239         -        $mkdirprog "$pathcomp"
   240         -	# mkdir can fail with a `File exist' error in case several
   241         -	# install-sh are creating the directory concurrently.  This
   242         -	# is OK.
   243         -	test -d "$pathcomp" || exit
   244         -      fi
   245         -      pathcomp=$pathcomp/
   246         -    done
   247         -  fi
   248         -
   249         -  if test -n "$dir_arg"; then
   250         -    $doit $mkdircmd "$dst" \
   251         -      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
   252         -      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
   253         -      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
   254         -      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
   255         -
   256         -  else
   257         -    dstfile=`basename "$dst"`
   258         -
   259         -    # Make a couple of temp file names in the proper directory.
   260         -    dsttmp=$dstdir/_inst.$$_
   261         -    rmtmp=$dstdir/_rm.$$_
   262         -
   263         -    # Trap to clean up those temp files at exit.
   264         -    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
   265         -    trap '(exit $?); exit' 1 2 13 15
   266         -
   267         -    # Copy the file name to the temp name.
   268         -    $doit $cpprog "$src" "$dsttmp" &&
   269         -
   270         -    # and set any options; do chmod last to preserve setuid bits.
   271         -    #
   272         -    # If any of these fail, we abort the whole thing.  If we want to
   273         -    # ignore errors from any of these, just make sure not to ignore
   274         -    # errors from the above "$doit $cpprog $src $dsttmp" command.
   275         -    #
   276         -    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
   277         -      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
   278         -      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
   279         -      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
   280         -
   281         -    # Now rename the file to the real destination.
   282         -    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
   283         -      || {
   284         -	   # The rename failed, perhaps because mv can't rename something else
   285         -	   # to itself, or perhaps because mv is so ancient that it does not
   286         -	   # support -f.
   287         -
   288         -	   # Now remove or move aside any old file at destination location.
   289         -	   # We try this two ways since rm can't unlink itself on some
   290         -	   # systems and the destination file might be busy for other
   291         -	   # reasons.  In this case, the final cleanup might fail but the new
   292         -	   # file should still install successfully.
   293         -	   {
   294         -	     if test -f "$dstdir/$dstfile"; then
   295         -	       $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
   296         -	       || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
   297         -	       || {
   298         -		 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
   299         -		 (exit 1); exit 1
   300         -	       }
   301         -	     else
   302         -	       :
   303         -	     fi
   304         -	   } &&
   305         -
   306         -	   # Now rename the file to the real destination.
   307         -	   $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
   308         -	 }
   309         -    }
   310         -  fi || { (exit 1); exit 1; }
   311         -done
   312         -
   313         -# The final little trick to "correctly" pass the exit status to the exit trap.
   314         -{
   315         -  (exit 0); exit 0
   316         -}
   317         -
   318         -# Local variables:
   319         -# eval: (add-hook 'write-file-hooks 'time-stamp)
   320         -# time-stamp-start: "scriptversion="
   321         -# time-stamp-format: "%:y-%02m-%02d.%02H"
   322         -# time-stamp-end: "$"
   323         -# End:

Deleted kitdll/buildsrc/kitdll-0.0/kitInit.c version [d13061de12].

     1         -#ifdef KIT_INCLUDES_TK
     2         -#  include <tk.h>
     3         -#else
     4         -#  include <tcl.h>
     5         -#endif /* KIT_INCLUDES_TK */
     6         -
     7         -#ifdef _WIN32
     8         -#  define WIN32_LEAN_AND_MEAN
     9         -#  include <windows.h>
    10         -#  undef WIN32_LEAN_AND_MEAN
    11         -#endif /* _WIN32 */
    12         -
    13         -#ifdef HAVE_STRING_H
    14         -#  include <string.h>
    15         -#endif
    16         -#ifdef HAVE_STRINGS_H
    17         -#  include <strings.h>
    18         -#endif
    19         -#ifdef HAVE_DLFCN_H
    20         -#  include <dlfcn.h>
    21         -#endif
    22         -
    23         -#include "tclInt.h"
    24         -
    25         -#if defined(HAVE_TCL_GETENCODINGNAMEFROMENVIRONMENT) && defined(HAVE_TCL_SETSYSTEMENCODING)
    26         -#  define TCLKIT_CAN_SET_ENCODING 1
    27         -#endif
    28         -#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 85
    29         -#  define TCLKIT_REQUIRE_TCLEXECUTABLENAME 1
    30         -#endif
    31         -#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 85
    32         -#  define KIT_INCLUDES_PWB 1
    33         -#endif
    34         -#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 86
    35         -#  define KIT_INCLUDES_ZLIB 1
    36         -#endif
    37         -
    38         -Tcl_AppInitProc Vfs_Init, Rechan_Init;
    39         -Tcl_AppInitProc Vfs_kitdll_data_tcl_Init;
    40         -#ifdef KIT_INCLUDES_MK4TCL
    41         -Tcl_AppInitProc Mk4tcl_Init;
    42         -#endif
    43         -#ifdef KIT_INCLUDES_PWB
    44         -Tcl_AppInitProc Pwb_Init;
    45         -#endif
    46         -#ifdef KIT_INCLUDES_ZLIB
    47         -Tcl_AppInitProc Zlib_Init;
    48         -#endif
    49         -#ifdef TCL_THREADS
    50         -Tcl_AppInitProc Thread_Init;
    51         -#endif
    52         -#ifdef _WIN32
    53         -Tcl_AppInitProc Dde_Init, Registry_Init;
    54         -#endif
    55         -
    56         -/*
    57         - * This Tcl code is invoked whenever Tcl_Init() is called on an
    58         - * interpreter.  It should mount up the VFS and make everything ready for
    59         - * that interpreter to do its job.
    60         - */
    61         -static char *preInitCmd =
    62         -"proc tclKitInit {} {\n"
    63         -	"rename tclKitInit {}\n"
    64         -#ifdef KIT_INCLUDES_ZLIB
    65         -	"catch { load {} zlib }\n"
    66         -#endif
    67         -	"load {} tclkit::init\n"
    68         -	"load {} rechan\n"
    69         -	"load {} vfs\n"
    70         -	"load {} vfs_kitdll_data_tcl\n"
    71         -#ifdef KIT_INCLUDES_MK4TCL
    72         -	"catch { load {} Mk4tcl }\n"
    73         -#endif
    74         -#include "vfs_kitdll.tcl.h"
    75         -	"if {![file exists \"/.KITDLL_TCL/boot.tcl\"]} {\n"
    76         -		"vfs::kitdll::Mount tcl /.KITDLL_TCL\n"
    77         -		"set ::initVFS 1\n"
    78         -	"}\n"
    79         -	"set f [open \"/.KITDLL_TCL/boot.tcl\"]\n"
    80         -	"set s [read $f]\n"
    81         -	"close $f\n"
    82         -	"::tclkit::init::initInterp\n"
    83         -	"rename ::tclkit::init::initInterp {}\n"
    84         -	"uplevel #0 $s\n"
    85         -#if defined(KIT_INCLUDES_TK) && defined(KIT_TK_VERSION)
    86         -	"package ifneeded Tk " KIT_TK_VERSION " {\n"
    87         -		"load {} Tk\n"
    88         -	"}\n"
    89         -#endif
    90         -#ifdef _WIN32
    91         -	"catch {load {} dde}\n"
    92         -	"catch {load {} registry}\n"
    93         -#endif /* _WIN32 */
    94         -"}\n"
    95         -"tclKitInit";
    96         -
    97         -#ifdef HAVE_ACCEPTABLE_DLADDR
    98         -/* Symbol to resolve against dladdr() */
    99         -static void _tclkit_dummy_func(void) {
   100         -	return;
   101         -}
   102         -
   103         -int main(int argc, char **argv);
   104         -#endif /* HAVE_ACCEPTABLE_DLADDR */
   105         -
   106         -/*
   107         - * This function will return a pathname we can open() to treat as a VFS,
   108         - * hopefully
   109         - */
   110         -static char *find_tclkit_dll_path(void) {
   111         -#ifdef HAVE_ACCEPTABLE_DLADDR
   112         -	Dl_info syminfo;
   113         -	int dladdr_ret;
   114         -#endif /* HAVE_ACCEPTABLE_DLADDR */
   115         -#ifdef _WIN32
   116         -	TCHAR modulename[8192];
   117         -	DWORD gmfn_ret;
   118         -#endif /* _WIN32 */
   119         -
   120         -#ifdef HAVE_ACCEPTABLE_DLADDR
   121         -	dladdr_ret = dladdr(&_tclkit_dummy_func, &syminfo);
   122         -	if (dladdr_ret != 0) {
   123         -		if (syminfo.dli_fname && syminfo.dli_fname[0] != '\0') {
   124         -			return(strdup(syminfo.dli_fname));
   125         -		}
   126         -	}
   127         -#endif /* HAVE_ACCEPTABLE_DLADDR */
   128         -
   129         -#ifdef _WIN32
   130         -	gmfn_ret = GetModuleFileName(TclWinGetTclInstance(), modulename, sizeof(modulename) / sizeof(modulename[0]) - 1);
   131         -
   132         -	if (gmfn_ret != 0) {
   133         -		return(strdup(modulename));
   134         -	}
   135         -#endif /* _WIN32 */
   136         -
   137         -	return(NULL);
   138         -}
   139         -
   140         -/* SetExecName --
   141         -	
   142         -   Hack to get around Tcl bug 1224888.
   143         -*/
   144         -static void SetExecName(Tcl_Interp *interp, const char *path) {
   145         -#ifdef TCLKIT_REQUIRE_TCLEXECUTABLENAME
   146         -	tclExecutableName = strdup(path);
   147         -#endif  
   148         -	Tcl_FindExecutable(path);
   149         -
   150         -	return;
   151         -}
   152         -	
   153         -static void FindAndSetExecName(Tcl_Interp *interp) {
   154         -	int len = 0;
   155         -	Tcl_Obj *execNameObj;
   156         -	Tcl_Obj *lobjv[1];
   157         -#ifdef HAVE_READLINK
   158         -	ssize_t readlink_ret;
   159         -	char exe_buf[4096];
   160         -#endif /* HAVE_READLINK */
   161         -#ifdef HAVE_ACCEPTABLE_DLADDR
   162         -	Dl_info syminfo;
   163         -	int dladdr_ret;
   164         -#endif /* HAVE_ACCEPTABLE_DLADDR */
   165         -
   166         -#ifdef HAVE_READLINK
   167         -	if (Tcl_GetNameOfExecutable() == NULL) {
   168         -		readlink_ret = readlink("/proc/self/exe", exe_buf, sizeof(exe_buf) - 1);
   169         -		
   170         -		if (readlink_ret > 0 && readlink_ret < (sizeof(exe_buf) - 1)) {
   171         -			exe_buf[readlink_ret] = '\0';
   172         -			
   173         -			SetExecName(interp, exe_buf);
   174         -			
   175         -			return;
   176         -		}
   177         -	}
   178         -	
   179         -	if (Tcl_GetNameOfExecutable() == NULL) {
   180         -		readlink_ret = readlink("/proc/curproc/file", exe_buf, sizeof(exe_buf) - 1);												 
   181         -
   182         -		if (readlink_ret > 0 && readlink_ret < (sizeof(exe_buf) - 1)) {
   183         -			exe_buf[readlink_ret] = '\0';
   184         -
   185         -			if (strcmp(exe_buf, "unknown") != 0) {
   186         -				SetExecName(interp, exe_buf);
   187         -
   188         -				return;
   189         -			}
   190         -		}
   191         -	}
   192         -#endif /* HAVE_READLINK */
   193         -
   194         -#ifdef HAVE_ACCEPTABLE_DLADDR
   195         -	if (Tcl_GetNameOfExecutable() == NULL) {
   196         -		dladdr_ret = dladdr(&main, &syminfo);
   197         -		if (dladdr_ret != 0) {
   198         -			SetExecName(interp, syminfo.dli_fname);
   199         -		}
   200         -	}
   201         -#endif /* HAVE_ACCEPTABLE_DLADDR */
   202         -
   203         -	if (Tcl_GetNameOfExecutable() == NULL) {
   204         -		lobjv[0] = Tcl_GetVar2Ex(interp, "argv0", NULL, TCL_GLOBAL_ONLY);
   205         -		execNameObj = Tcl_FSJoinToPath(Tcl_FSGetCwd(interp), 1, lobjv);
   206         -
   207         -		SetExecName(interp, Tcl_GetStringFromObj(execNameObj, &len));
   208         -
   209         -		return;
   210         -	}
   211         -
   212         -	return;
   213         -}
   214         -
   215         -
   216         -/*
   217         - * This function exists to allow C code to initialize a particular
   218         - * interpreter.
   219         - */
   220         -static int tclkit_init_initinterp(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
   221         -	char *kitdll_path;
   222         -#ifdef TCLKIT_CAN_SET_ENCODING
   223         -	Tcl_DString encodingName;
   224         -#endif /* TCLKIT_CAN_SET_ENCODING */
   225         -
   226         -
   227         -#ifdef _WIN32
   228         -	Tcl_SetVar(interp, "tcl_rcFileName", "~/tclkitrc.tcl", TCL_GLOBAL_ONLY);
   229         -#else   
   230         -	Tcl_SetVar(interp, "tcl_rcFileName", "~/.tclkitrc", TCL_GLOBAL_ONLY);
   231         -#endif
   232         -
   233         -	kitdll_path = find_tclkit_dll_path();
   234         -	if (kitdll_path != NULL) {
   235         -		Tcl_SetVar(interp, "tclKitFilename", kitdll_path, TCL_GLOBAL_ONLY);
   236         -
   237         -		free(kitdll_path);
   238         -	}
   239         -
   240         -	FindAndSetExecName(interp);
   241         -
   242         -#ifdef TCLKIT_CAN_SET_ENCODING
   243         -	/* Set the encoding from the Environment */
   244         -	Tcl_GetEncodingNameFromEnvironment(&encodingName);
   245         -	Tcl_SetSystemEncoding(NULL, Tcl_DStringValue(&encodingName));
   246         -	Tcl_SetVar(interp, "tclkit_system_encoding", Tcl_DStringValue(&encodingName), TCL_GLOBAL_ONLY);
   247         -	Tcl_DStringFree(&encodingName);
   248         -#endif  
   249         -
   250         -	return(TCL_OK);
   251         -}
   252         -
   253         -/*
   254         - * Create a package for initializing a particular interpreter.  This is
   255         - * our hook to have Tcl invoke C commands when creating an interpreter.
   256         - * The preInitCmd will load the package in the new interpreter and invoke
   257         - * this function.
   258         - */
   259         -int Tclkit_init_Init(Tcl_Interp *interp) {
   260         -	Tcl_Command tclCreatComm_ret;
   261         -	int tclPkgProv_ret;
   262         -
   263         -	tclCreatComm_ret = Tcl_CreateObjCommand(interp, "::tclkit::init::initInterp", tclkit_init_initinterp, NULL, NULL);
   264         -	if (!tclCreatComm_ret) {
   265         -		return(TCL_ERROR);
   266         -	}
   267         -
   268         -	tclPkgProv_ret = Tcl_PkgProvide(interp, "tclkit::init", "1.0");
   269         -
   270         -	return(tclPkgProv_ret);
   271         -}
   272         -
   273         -/*
   274         - * Initialize the Tcl system when we are loaded, that way Tcl functions
   275         - * are ready to be used when invoked.
   276         - */
   277         -void __attribute__((constructor)) _Tclkit_Init(void) {
   278         -	Tcl_StaticPackage(0, "tclkit::init", Tclkit_init_Init, NULL);
   279         -	Tcl_StaticPackage(0, "rechan", Rechan_Init, NULL);
   280         -	Tcl_StaticPackage(0, "vfs", Vfs_Init, NULL);
   281         -	Tcl_StaticPackage(0, "vfs_kitdll_data_tcl", Vfs_kitdll_data_tcl_Init, NULL);
   282         -#ifdef KIT_INCLUDES_ZLIB
   283         -        Tcl_StaticPackage(0, "zlib", Zlib_Init, NULL);
   284         -#endif
   285         -#ifdef KIT_INCLUDES_MK4TCL
   286         -	Tcl_StaticPackage(0, "Mk4tcl", Mk4tcl_Init, NULL);
   287         -#endif
   288         -#ifdef KIT_INCLUDES_PWB
   289         -	Tcl_StaticPackage(0, "pwb", Pwb_Init, NULL);
   290         -#endif
   291         -#ifdef TCL_THREADS
   292         -	Tcl_StaticPackage(0, "Thread", Thread_Init, NULL);
   293         -#endif
   294         -#ifdef _WIN32
   295         -	Tcl_StaticPackage(0, "dde", Dde_Init, NULL);
   296         -	Tcl_StaticPackage(0, "registry", Registry_Init, NULL);
   297         -#endif
   298         -#ifdef KIT_INCLUDES_TK
   299         -	Tcl_StaticPackage(0, "Tk", Tk_Init, Tk_SafeInit);
   300         -#endif  
   301         -
   302         -	TclSetPreInitScript(preInitCmd);
   303         -
   304         -	return;
   305         -}

Deleted kitdll/buildsrc/kitdll-0.0/pwb.c version [d3bbfc6849].

     1         -/* Written by Matt Newman and Jean-Claude Wippler, as part of Tclkit.
     2         - * March 2003 - placed in the public domain by the authors.
     3         - *
     4         - * Expose TclSetLibraryPath to scripts (in 8.4 only, 8.5 has "encoding dirs").
     5         - */
     6         -
     7         -#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 85
     8         -
     9         -#include <tcl.h>
    10         -#include <tclInt.h> /* TclGetLibraryPath */
    11         -
    12         -void SetExecName(Tcl_Interp *);
    13         -
    14         -/* Support for encodings, from Vince Darley <vince.darley@eurobios.com> */
    15         -static int
    16         -LibraryPathObjCmd(dummy, interp, objc, objv)
    17         -     ClientData dummy;
    18         -     Tcl_Interp *interp;
    19         -     int objc;
    20         -     Tcl_Obj *CONST objv[];
    21         -{
    22         -     if (objc == 1) {
    23         -	Tcl_SetObjResult(interp, TclGetLibraryPath());
    24         -     } else {
    25         -	Tcl_Obj *path=Tcl_DuplicateObj(objv[1]);
    26         -	TclSetLibraryPath(Tcl_NewListObj(1,&path));
    27         -	TclpSetInitialEncodings();
    28         -     }
    29         -     return TCL_OK;
    30         -}
    31         -
    32         -/*
    33         - * Public Entrypoint
    34         - */
    35         -
    36         -DLLEXPORT int Pwb_Init(Tcl_Interp *interp)
    37         -{
    38         -    Tcl_CreateObjCommand(interp, "librarypath", LibraryPathObjCmd, 0, 0);
    39         -    return Tcl_PkgProvide( interp, "pwb", "1.1");
    40         -}
    41         -
    42         -#endif

Deleted kitdll/buildsrc/kitdll-0.0/rechan.c version [95be374a42].

     1         -/* Written by Matt Newman and Jean-Claude Wippler, as part of Tclkit.
     2         - * March 2003 - placed in the public domain by the authors.
     3         - *
     4         - * Reflecting channel interface
     5         - */
     6         -
     7         -#include <tcl.h>
     8         -
     9         -#ifndef TCL_DECLARE_MUTEX
    10         -#define TCL_DECLARE_MUTEX(v)
    11         -#define Tcl_MutexLock(v)
    12         -#define Tcl_MutexUnlock(v)
    13         -#endif
    14         -
    15         -  static int mkChanSeq = 0;
    16         -  TCL_DECLARE_MUTEX(rechanMutex)
    17         -
    18         -/* Uncomment for Linux or other non-Solaris OS's for memcpy declaration */
    19         -#include <memory.h>
    20         -
    21         -/* Uncomment for Solaris (and comment above) for memcpy declaration */
    22         -/* #include <string.h> */
    23         -
    24         -#ifndef EINVAL
    25         -#define EINVAL 9
    26         -#endif
    27         -
    28         -typedef struct
    29         -{
    30         -  Tcl_Channel _chan;
    31         -  int _validMask;
    32         -  int _watchMask;
    33         -  Tcl_Interp* _interp;
    34         -  Tcl_Obj* _context;
    35         -  Tcl_Obj* _seek;
    36         -  Tcl_Obj* _read;
    37         -  Tcl_Obj* _write;
    38         -  Tcl_Obj* _name;
    39         -  Tcl_TimerToken _timer;
    40         -} ReflectingChannel;
    41         -
    42         -static ReflectingChannel*
    43         -rcCreate (Tcl_Interp* ip_, Tcl_Obj* context_, int mode_, const char* name_)
    44         -{
    45         -  ReflectingChannel* cp = (ReflectingChannel*) Tcl_Alloc (sizeof *cp);
    46         -
    47         -  cp->_validMask = mode_;
    48         -  cp->_watchMask = 0;
    49         -  cp->_chan = 0;
    50         -  cp->_context = context_;
    51         -  cp->_interp = ip_;
    52         -  cp->_name = Tcl_NewStringObj(name_, -1);
    53         -  cp->_timer = NULL;
    54         -
    55         -    /* support Tcl_GetIndexFromObj by keeping these objectified */
    56         -  cp->_seek = Tcl_NewStringObj("seek", -1);
    57         -  cp->_read = Tcl_NewStringObj("read", -1);
    58         -  cp->_write = Tcl_NewStringObj("write", -1);
    59         -
    60         -  Tcl_IncrRefCount(cp->_context);
    61         -  Tcl_IncrRefCount(cp->_seek);
    62         -  Tcl_IncrRefCount(cp->_read);
    63         -  Tcl_IncrRefCount(cp->_write);
    64         -  Tcl_IncrRefCount(cp->_name);
    65         -
    66         -  return cp;
    67         -}
    68         -
    69         -static Tcl_Obj*
    70         -rcBuildCmdList(ReflectingChannel* chan_, Tcl_Obj* cmd_)
    71         -{
    72         -  Tcl_Obj* vec = Tcl_DuplicateObj(chan_->_context);
    73         -  Tcl_IncrRefCount(vec);
    74         -
    75         -  Tcl_ListObjAppendElement(chan_->_interp, vec, cmd_);
    76         -  Tcl_ListObjAppendElement(chan_->_interp, vec, chan_->_name);
    77         -
    78         -  return vec; /* with refcount 1 */
    79         -}
    80         -
    81         -static int
    82         -rcClose (ClientData cd_, Tcl_Interp* interp)
    83         -{
    84         -  ReflectingChannel* chan = (ReflectingChannel*) cd_;
    85         -  int n = -1;
    86         -
    87         -  Tcl_SavedResult sr;
    88         -  Tcl_Obj* cmd = rcBuildCmdList(chan, Tcl_NewStringObj("close", -1));
    89         -  Tcl_Interp* ip = chan->_interp;
    90         -
    91         -  Tcl_SaveResult(ip, &sr);
    92         -
    93         -  if (Tcl_EvalObjEx(ip, cmd, TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT) == TCL_OK)
    94         -    Tcl_GetIntFromObj(NULL, Tcl_GetObjResult(ip), &n);
    95         -
    96         -  Tcl_RestoreResult(ip, &sr);
    97         -  Tcl_DecrRefCount(cmd);
    98         -
    99         -  if (chan->_timer != NULL) {
   100         -    Tcl_DeleteTimerHandler(chan->_timer);
   101         -    chan->_timer = NULL;
   102         -  }
   103         -
   104         -  Tcl_DecrRefCount(chan->_context);
   105         -  Tcl_DecrRefCount(chan->_seek);
   106         -  Tcl_DecrRefCount(chan->_read);
   107         -  Tcl_DecrRefCount(chan->_write);
   108         -  Tcl_DecrRefCount(chan->_name);
   109         -  Tcl_Free((char*) chan);
   110         -
   111         -  return TCL_OK;
   112         -}
   113         -
   114         -static int
   115         -rcInput (ClientData cd_, char* buf, int toRead, int* errorCodePtr)
   116         -{
   117         -  ReflectingChannel* chan = (ReflectingChannel*) cd_;
   118         -  int n = -1;
   119         -
   120         -  if (chan->_validMask & TCL_READABLE) {
   121         -    Tcl_SavedResult sr;
   122         -    Tcl_Obj* cmd = rcBuildCmdList(chan, chan->_read);
   123         -    Tcl_Interp* ip = chan->_interp;
   124         -
   125         -    Tcl_ListObjAppendElement(NULL, cmd, Tcl_NewIntObj(toRead));
   126         -    Tcl_SaveResult(ip, &sr);
   127         -
   128         -    if (Tcl_EvalObjEx(ip, cmd, TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT) == TCL_OK) {
   129         -      void* s = Tcl_GetByteArrayFromObj(Tcl_GetObjResult(ip), &n);
   130         -      if (0 <= n && n <= toRead)
   131         -	if (n > 0)
   132         -	  memcpy(buf, s, n);
   133         -	else
   134         -	  chan->_watchMask &= ~TCL_READABLE;
   135         -      else
   136         -	n = -1;
   137         -    }
   138         -
   139         -    Tcl_RestoreResult(ip, &sr);
   140         -    Tcl_DecrRefCount(cmd);
   141         -  }
   142         -
   143         -  if (n < 0)
   144         -    *errorCodePtr = EINVAL;
   145         -  return n;
   146         -}
   147         -
   148         -static int
   149         -rcOutput (ClientData cd_, const char* buf, int toWrite, int* errorCodePtr)
   150         -{
   151         -  ReflectingChannel* chan = (ReflectingChannel*) cd_;
   152         -  int n = -1;
   153         -
   154         -  if (chan->_validMask & TCL_WRITABLE) {
   155         -    Tcl_SavedResult sr;
   156         -    Tcl_Obj* cmd = rcBuildCmdList(chan, chan->_write);
   157         -    Tcl_Interp* ip = chan->_interp;
   158         -
   159         -    Tcl_ListObjAppendElement(NULL, cmd,
   160         -	      		Tcl_NewByteArrayObj((unsigned char*) buf, toWrite));
   161         -    Tcl_SaveResult(ip, &sr);
   162         -
   163         -    if (Tcl_EvalObjEx(ip, cmd, TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT) == TCL_OK &&
   164         -	Tcl_GetIntFromObj(NULL, Tcl_GetObjResult(ip), &n) == TCL_OK)
   165         -      if (0 <= n && n <= toWrite)
   166         -	chan->_watchMask = chan->_validMask;
   167         -      else
   168         -	n = -1;
   169         -
   170         -    Tcl_RestoreResult(ip, &sr);
   171         -    Tcl_DecrRefCount(cmd);
   172         -  }
   173         -
   174         -  if (n < 0)
   175         -    *errorCodePtr = EINVAL;
   176         -  return n;
   177         -}
   178         -
   179         -static int
   180         -rcSeek (ClientData cd_, long offset, int seekMode, int* errorCodePtr)
   181         -{
   182         -  ReflectingChannel* chan = (ReflectingChannel*) cd_;
   183         -  int n = -1;
   184         -
   185         -  Tcl_SavedResult sr;
   186         -  Tcl_Obj* cmd = rcBuildCmdList(chan, chan->_seek);
   187         -  Tcl_Interp* ip = chan->_interp;
   188         -
   189         -  Tcl_ListObjAppendElement(NULL, cmd, Tcl_NewLongObj(offset));
   190         -  Tcl_ListObjAppendElement(NULL, cmd, Tcl_NewIntObj(seekMode));
   191         -  Tcl_SaveResult(ip, &sr);
   192         -
   193         -  if (Tcl_EvalObjEx(ip, cmd, TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT) == TCL_OK &&
   194         -      Tcl_GetIntFromObj(NULL, Tcl_GetObjResult(ip), &n) == TCL_OK)
   195         -    chan->_watchMask = chan->_validMask;
   196         -
   197         -  Tcl_RestoreResult(ip, &sr);
   198         -  Tcl_DecrRefCount(cmd);
   199         -
   200         -  if (n < 0)
   201         -    *errorCodePtr = EINVAL;
   202         -  return n;
   203         -}
   204         -
   205         -static void
   206         -rcTimerProc (ClientData cd_)
   207         -{
   208         -  ReflectingChannel* chan = (ReflectingChannel*) cd_;
   209         -
   210         -  if (chan->_timer != NULL)
   211         -    Tcl_DeleteTimerHandler(chan->_timer);
   212         -  chan->_timer = NULL;
   213         -  Tcl_NotifyChannel(chan->_chan, chan->_watchMask);
   214         -}
   215         -
   216         -static void
   217         -rcWatchChannel (ClientData cd_, int mask)
   218         -{
   219         -  ReflectingChannel* chan = (ReflectingChannel*) cd_;
   220         -
   221         -  /* Dec 2001: adopting logic used in Andreas Kupries' memchan, i.e. timers */
   222         -
   223         -  if (mask) {
   224         -    chan->_watchMask = mask & chan->_validMask;
   225         -    if (chan->_watchMask && chan->_timer == NULL)
   226         -      chan->_timer = Tcl_CreateTimerHandler(5, rcTimerProc, cd_);
   227         -  } else if (chan->_timer != NULL) {
   228         -    Tcl_DeleteTimerHandler(chan->_timer);
   229         -    chan->_timer = NULL;
   230         -  }
   231         -}
   232         -
   233         -static int
   234         -rcGetFile (ClientData cd_, int direction, ClientData* handlePtr)
   235         -{
   236         -  return TCL_ERROR;
   237         -}
   238         -
   239         -static int
   240         -rcBlock (ClientData cd_, int mode)
   241         -{
   242         -  return 0;
   243         -}
   244         -
   245         -static Tcl_ChannelType reChannelType = {
   246         -  "rechan",       /* Type name.                                    */
   247         -  (Tcl_ChannelTypeVersion) rcBlock, /* Set blocking/nonblocking behaviour */
   248         -  rcClose,        /* Close channel, clean instance data            */
   249         -  rcInput,        /* Handle read request                           */
   250         -  rcOutput,       /* Handle write request                          */
   251         -  rcSeek,         /* Move location of access point.    NULL'able   */
   252         -  0,              /* Set options.                      NULL'able   */
   253         -  0,              /* Get options.                      NULL'able   */
   254         -  rcWatchChannel, /* Initialize notifier                           */
   255         -  rcGetFile       /* Get OS handle from the channel.               */
   256         -};
   257         -
   258         -static int
   259         -cmd_rechan(ClientData cd_, Tcl_Interp* ip_, int objc_, Tcl_Obj*const* objv_)
   260         -{
   261         -  ReflectingChannel *rc;
   262         -  int mode;
   263         -  char buffer [20];
   264         -
   265         -  if (objc_ != 3) {
   266         -    Tcl_WrongNumArgs(ip_, 1, objv_, "command mode");
   267         -    return TCL_ERROR;
   268         -  }
   269         -
   270         -  if (Tcl_ListObjLength(ip_, objv_[1], &mode) == TCL_ERROR ||
   271         -      Tcl_GetIntFromObj(ip_, objv_[2], &mode) == TCL_ERROR)
   272         -    return TCL_ERROR;
   273         -
   274         -  Tcl_MutexLock(&rechanMutex);
   275         -  sprintf(buffer, "rechan%d", ++mkChanSeq);
   276         -  Tcl_MutexUnlock(&rechanMutex);
   277         -
   278         -  rc = rcCreate (ip_, objv_[1], mode, buffer);
   279         -  rc->_chan = Tcl_CreateChannel(&reChannelType, buffer, (ClientData) rc, mode);
   280         -
   281         -  Tcl_RegisterChannel(ip_, rc->_chan);
   282         -  Tcl_SetChannelOption(ip_, rc->_chan, "-buffering", "none");
   283         -  Tcl_SetChannelOption(ip_, rc->_chan, "-blocking", "0");
   284         -
   285         -  Tcl_SetResult(ip_, buffer, TCL_VOLATILE);
   286         -  return TCL_OK;
   287         -}
   288         -
   289         -DLLEXPORT int Rechan_Init(Tcl_Interp* interp)
   290         -{
   291         -    if (!Tcl_InitStubs(interp, "8.4", 0))
   292         -        return TCL_ERROR;
   293         -    Tcl_CreateObjCommand(interp, "rechan", cmd_rechan, 0, 0);
   294         -    return Tcl_PkgProvide(interp, "rechan", "1.0");
   295         -}

Deleted kitdll/buildsrc/kitdll-0.0/stringify.tcl version [07e25e6903].

     1         -#! /usr/bin/env tclsh
     2         -
     3         -proc stringifyfile {filename {key 0}} {
     4         -	catch {
     5         -		set fd [open $filename r]
     6         -	}
     7         -
     8         -	if {![info exists fd]} {
     9         -		return ""
    10         -	}
    11         -
    12         -	set data [read -nonewline $fd]
    13         -	close $fd
    14         -
    15         -	foreach line [split $data \n] {
    16         -		set line [string map [list "\\" "\\\\" "\"" "\\\""] $line]
    17         -		append ret "	\"$line\\n\"\n"
    18         -	}
    19         -
    20         -	return $ret
    21         -}
    22         -
    23         -foreach file $argv {
    24         -	puts -nonewline [stringifyfile $file]
    25         -}
    26         -
    27         -exit 0

Deleted kitdll/buildsrc/kitdll-0.0/zlib.c version [d3ecfd237b].

     1         -/* Written by Jean-Claude Wippler, as part of Tclkit.
     2         - * March 2003 - placed in the public domain by the author.
     3         - *
     4         - * Interface to the "zlib" compression library
     5         - */
     6         -
     7         -#include <tcl.h>
     8         -#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 86
     9         -#include "zlib.h"
    10         -
    11         -typedef struct {
    12         -  z_stream stream;
    13         -  Tcl_Obj *indata;
    14         -} zlibstream;
    15         -
    16         -static int
    17         -zstreamincmd(ClientData cd, Tcl_Interp *ip, int objc, Tcl_Obj *CONST objv[])
    18         -{
    19         -  zlibstream *zp = (zlibstream*) cd;
    20         -  int count = 0;
    21         -  int e, index;
    22         -  Tcl_Obj *obj;
    23         -
    24         -  static CONST84 char* cmds[] = { "fill", "drain", NULL, };
    25         -
    26         -  if (Tcl_GetIndexFromObj(ip, objv[1], cmds, "option", 0, &index) != TCL_OK)
    27         -    return TCL_ERROR;
    28         -
    29         -  switch (index) {
    30         -
    31         -    case 0: /* fill ?data? */
    32         -      if (objc >= 3) {
    33         -	Tcl_IncrRefCount(objv[2]);
    34         -	Tcl_DecrRefCount(zp->indata);
    35         -	zp->indata = objv[2];
    36         -	zp->stream.next_in = Tcl_GetByteArrayFromObj(zp->indata,
    37         -						  (int*) &zp->stream.avail_in);
    38         -      }
    39         -      Tcl_SetObjResult(ip, Tcl_NewIntObj(zp->stream.avail_in));
    40         -      break;
    41         -
    42         -    case 1: /* drain count */
    43         -      if (objc != 3) {
    44         -	Tcl_WrongNumArgs(ip, 2, objv, "count");
    45         -	return TCL_ERROR;
    46         -      }
    47         -      if (Tcl_GetIntFromObj(ip, objv[2], &count) != TCL_OK)
    48         -	return TCL_ERROR;
    49         -      obj = Tcl_GetObjResult(ip);
    50         -      Tcl_SetByteArrayLength(obj, count);
    51         -      zp->stream.next_out = Tcl_GetByteArrayFromObj(obj,
    52         -						  (int*) &zp->stream.avail_out);
    53         -      e = inflate(&zp->stream, Z_NO_FLUSH);
    54         -      if (e != 0 && e != Z_STREAM_END) {
    55         -	Tcl_SetResult(ip, (char*) zError(e), TCL_STATIC);
    56         -	return TCL_ERROR;
    57         -      }
    58         -      Tcl_SetByteArrayLength(obj, count - zp->stream.avail_out);
    59         -      break;
    60         -  }
    61         -  return TCL_OK;
    62         -}
    63         -
    64         -void zstreamdelproc(ClientData cd)
    65         -{
    66         -  zlibstream *zp = (zlibstream*) cd;
    67         -  inflateEnd(&zp->stream);
    68         -  Tcl_DecrRefCount(zp->indata);
    69         -  Tcl_Free((void*) zp);
    70         -}
    71         -
    72         -static int
    73         -ZlibCmd(ClientData dummy, Tcl_Interp *ip, int objc, Tcl_Obj *CONST objv[])
    74         -{
    75         -  int e = TCL_OK, index, dlen, wbits = -MAX_WBITS;
    76         -  long flag;
    77         -  Byte *data;
    78         -  z_stream stream;
    79         -  Tcl_Obj *obj = Tcl_GetObjResult(ip);
    80         -
    81         -  static CONST84 char* cmds[] = {
    82         -    "adler32", "crc32", "compress", "deflate", "decompress", "inflate", 
    83         -    "sdecompress", "sinflate", NULL,
    84         -  };
    85         -
    86         -  if (objc < 3 || objc > 4) {
    87         -    Tcl_WrongNumArgs(ip, 1, objv, "option data ?...?");
    88         -    return TCL_ERROR;
    89         -  }
    90         -
    91         -  if (Tcl_GetIndexFromObj(ip, objv[1], cmds, "option", 0, &index) != TCL_OK ||
    92         -      objc > 3 && Tcl_GetLongFromObj(ip, objv[3], &flag) != TCL_OK)
    93         -    return TCL_ERROR;
    94         -
    95         -  data = Tcl_GetByteArrayFromObj(objv[2], &dlen);
    96         -
    97         -  switch (index) {
    98         -
    99         -    case 0: /* adler32 str ?start? -> checksum */
   100         -      if (objc < 4)
   101         -	flag = (long) adler32(0, 0, 0);
   102         -      Tcl_SetLongObj(obj, (long) adler32((uLong) flag, data, dlen));
   103         -      return TCL_OK;
   104         -
   105         -    case 1: /* crc32 str ?start? -> checksum */
   106         -      if (objc < 4)
   107         -	flag = (long) crc32(0, 0, 0);
   108         -      Tcl_SetLongObj(obj, (long) crc32((uLong) flag, data, dlen));
   109         -      return TCL_OK;
   110         -      
   111         -    case 2: /* compress data ?level? -> data */
   112         -      wbits = MAX_WBITS;
   113         -    case 3: /* deflate data ?level? -> data */
   114         -      if (objc < 4)
   115         -	flag = Z_DEFAULT_COMPRESSION;
   116         -
   117         -      stream.avail_in = (uInt) dlen;
   118         -      stream.next_in = data;
   119         -
   120         -      stream.avail_out = (uInt) dlen + dlen / 1000 + 12;
   121         -      Tcl_SetByteArrayLength(obj, stream.avail_out);
   122         -      stream.next_out = Tcl_GetByteArrayFromObj(obj, NULL);
   123         -
   124         -      stream.zalloc = 0;
   125         -      stream.zfree = 0;
   126         -      stream.opaque = 0;
   127         -
   128         -      e = deflateInit2(&stream, (int) flag, Z_DEFLATED, wbits,
   129         -			      MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY);
   130         -      if (e != Z_OK)
   131         -	break;
   132         -
   133         -      e = deflate(&stream, Z_FINISH);
   134         -      if (e != Z_STREAM_END) {
   135         -	deflateEnd(&stream);
   136         -	if (e == Z_OK) e = Z_BUF_ERROR;
   137         -      } else
   138         -	e = deflateEnd(&stream);
   139         -      break;
   140         -      
   141         -    case 4: /* decompress data ?bufsize? -> data */
   142         -      wbits = MAX_WBITS;
   143         -    case 5: /* inflate data ?bufsize? -> data */
   144         -    {
   145         -      if (objc < 4)
   146         -	flag = 16 * 1024;
   147         -
   148         -      for (;;) {
   149         -	stream.zalloc = 0;
   150         -	stream.zfree = 0;
   151         -
   152         -	/* +1 because ZLIB can "over-request" input (but ignore it) */
   153         -	stream.avail_in = (uInt) dlen +  1;
   154         -	stream.next_in = data;
   155         -
   156         -	stream.avail_out = (uInt) flag;
   157         -	Tcl_SetByteArrayLength(obj, stream.avail_out);
   158         -	stream.next_out = Tcl_GetByteArrayFromObj(obj, NULL);
   159         -
   160         -	/* Negative value suppresses ZLIB header */
   161         -	e = inflateInit2(&stream, wbits);
   162         -	if (e == Z_OK) {
   163         -	  e = inflate(&stream, Z_FINISH);
   164         -	  if (e != Z_STREAM_END) {
   165         -	    inflateEnd(&stream);
   166         -	    if (e == Z_OK) e = Z_BUF_ERROR;
   167         -	  } else
   168         -	    e = inflateEnd(&stream);
   169         -	}
   170         -
   171         -	if (e == Z_OK || e != Z_BUF_ERROR) break;
   172         -
   173         -	Tcl_SetByteArrayLength(obj, 0);
   174         -	flag *= 2;
   175         -      }
   176         -
   177         -      break;
   178         -    }
   179         -      
   180         -    case 6: /* sdecompress cmdname -> */
   181         -      wbits = MAX_WBITS;
   182         -    case 7: /* sinflate cmdname -> */
   183         -    {
   184         -      zlibstream *zp = (zlibstream*) Tcl_Alloc(sizeof (zlibstream));
   185         -      zp->indata = Tcl_NewObj();
   186         -      Tcl_IncrRefCount(zp->indata);
   187         -      zp->stream.zalloc = 0;
   188         -      zp->stream.zfree = 0;
   189         -      zp->stream.opaque = 0;
   190         -      zp->stream.next_in = 0;
   191         -      zp->stream.avail_in = 0;
   192         -      inflateInit2(&zp->stream, wbits);
   193         -      Tcl_CreateObjCommand(ip, Tcl_GetStringFromObj(objv[2], 0), zstreamincmd,
   194         -      				(ClientData) zp, zstreamdelproc);
   195         -      return TCL_OK;
   196         -    }
   197         -  }
   198         -
   199         -  if (e != Z_OK) {
   200         -    Tcl_SetResult(ip, (char*) zError(e), TCL_STATIC);
   201         -    return TCL_ERROR;
   202         -  }
   203         -
   204         -  Tcl_SetByteArrayLength(obj, stream.total_out);
   205         -  return TCL_OK;
   206         -}
   207         -
   208         -int Zlib_Init(Tcl_Interp *interp)
   209         -{
   210         -    Tcl_CreateObjCommand(interp, "zlib", ZlibCmd, 0, 0);
   211         -    return Tcl_PkgProvide( interp, "zlib", "1.1");
   212         -}
   213         -#endif /* Tcl version less than 8.6 */

Modified kitsh/build.sh from [ec7be57b0b] to [d3695d1fba].

    26     26   rm -rf 'build' 'out' 'inst'
    27     27   mkdir 'out' 'inst' || exit 1
    28     28   
    29     29   
    30     30   (
    31     31   	cp -r 'buildsrc' 'build'
    32     32   	cd "${BUILDDIR}" || exit 1
           33  +
           34  +	# Fix up archives that Tcl gets wrong
           35  +	for archive in ../../../tcl/inst/lib/dde*/tcldde*.a ../../../tcl/inst/lib/reg*/tclreg*.a; do
           36  +		if [ ! -f "${archive}" ]; then
           37  +			continue
           38  +		fi
           39  +
           40  +		rm -rf __TEMP__
           41  +		(
           42  +			mkdir __TEMP__ || exit 1
           43  +			cd __TEMP__
           44  +
           45  +			## Patch archive name
           46  +			archive="../${archive}"
           47  +
           48  +			"${AR:-ar}" x "${archive}" || exit 1
           49  +
           50  +			rm -f "${archive}"
           51  +
           52  +			"${AR:-ar}" cr "${archive}" *.o || exit 1
           53  +			"${RANLIB:-ranlib}" "${archive}" || true
           54  +		)
           55  +	done
           56  +
           57  +	# Determine how we invoke a Tcl interpreter
           58  +	for testsh in "${TCLSH_NATIVE:-false}" tclsh tclsh8.4 tclsh8.5 tclsh8.6 "${TCLKIT:-tclkit}"; do
           59  +		if echo 'exit 0' | "${testsh}" >/dev/null 2>/dev/null; then
           60  +			TCLSH_NATIVE="${testsh}"
           61  +
           62  +			break
           63  +		fi
           64  +	done
    33     65   
    34     66   	# Cleanup, just incase the incoming directory was not pre-cleaned
    35     67   	${MAKE:-make} distclean >/dev/null 2>/dev/null
           68  +	rm -rf 'starpack.vfs'
           69  +
           70  +	# Create VFS directory
           71  +	mkdir "starpack.vfs"
           72  +	mkdir "starpack.vfs/lib"
           73  +
           74  +	## Copy in all built directories
           75  +	cp -r "${OTHERPKGSDIR}"/*/out/* 'starpack.vfs/'
           76  +
           77  +	## Rename the "vfs" package directory to what "boot.tcl" expects
           78  +	mv 'starpack.vfs/lib'/vfs* 'starpack.vfs/lib/vfs'
           79  +
           80  +	## Install "boot.tcl"
           81  +	cp 'boot.tcl' 'starpack.vfs/'
    36     82   
    37     83   	# Figure out if zlib compiled (if not, the system zlib will be used and we
    38     84   	# will need to have that present)
    39     85   	ZLIBDIR="$(cd "${OTHERPKGSDIR}/zlib/inst" 2>/dev/null && pwd)"
    40     86   	export ZLIBDIR
    41     87   	if [ -z "${ZLIBDIR}" -o ! -f "${ZLIBDIR}/lib/libz.a" ]; then
    42     88   		unset ZLIBDIR
................................................................................
    45     91   	# Copy user specified kit.rc and kit.ico in to build directory, if found
    46     92   	cp "${KITCREATOR_ICON}" "${BUILDDIR}/kit.ico"
    47     93   	cp "${KITCREATOR_RC}" "${BUILDDIR}/kit.rc"
    48     94   
    49     95   	# Include extra objects as required
    50     96   	## Initialize list of extra objects
    51     97   	EXTRA_OBJS=""
           98  +	export EXTRA_OBJS
    52     99   
    53    100   	## Tk Resources (needed for Win32 support) -- remove kit-found resources to prevent the symbols from being in conflict
    54    101   	TKDIR="$(cd "${OTHERPKGSDIR}/tk/inst" && pwd)"
    55    102   	TKRSRC="${TKDIR}/lib/tkbase.res.o"
    56    103   	if [ -n "${TKDIR}" -a -f "${TKRSRC}" ]; then
    57    104   		EXTRA_OBJS="${EXTRA_OBJS} ${TKRSRC}"
    58    105   
    59    106   		echo ' *** Removing "kit.rc" since we have Tk with its own resource file'
    60    107   
    61    108   		rm -f "${BUILDDIR}/kit.rc"
    62    109   	fi
    63    110   
    64         -	## Export to the environment, to be picked up by the "configure" script
    65         -	export EXTRA_OBJS
          111  +	# Determine if target is KitDLL or KitSH
          112  +	if [ "${KITTARGET}" = "kitdll" ]; then
          113  +		CONFIGUREEXTRA="${CONFIGUREEXTRA} --enable-kitdll"
          114  +	fi
    66    115   
    67         -	# Compile Kitsh
          116  +	# Compile Kit
    68    117   	if [ -z "${ZLIBDIR}" ]; then
    69    118   		echo "Running: ./configure --with-tcl=\"${TCLCONFIGDIR}\" ${CONFIGUREEXTRA}"
    70    119   
    71    120   		./configure --with-tcl="${TCLCONFIGDIR}" ${CONFIGUREEXTRA}
    72    121   	else
    73    122   		echo "Running: ./configure --with-tcl=\"${TCLCONFIGDIR}\" --with-zlib=\"${ZLIBDIR}\" ${CONFIGUREEXTRA}"
    74    123   
    75    124   		./configure --with-tcl="${TCLCONFIGDIR}" --with-zlib="${ZLIBDIR}" ${CONFIGUREEXTRA}
    76    125   	fi
    77    126   
    78         -	echo "Running: ${MAKE:-make}"
    79         -	${MAKE:-make} || exit 1
          127  +	echo "Running: ${MAKE:-make} TCLSH_NATIVE=\"${TCLSH_NATIVE}\""
          128  +	${MAKE:-make} TCLSH_NATIVE="${TCLSH_NATIVE}" || exit 1
    80    129   
    81    130   	# Strip the kit of all symbols, if possible
    82    131   	"${STRIP:-strip}" kit >/dev/null 2>/dev/null
          132  +	"${STRIP:-strip}" -g libtclkit* >/dev/null 2>/dev/null
          133  +
          134  +	# Fix up Win32 DLL names
          135  +	## .DLL.A -> .LIB
          136  +	for file in libtclkit*.dll.a; do
          137  +		if [ ! -f "${file}" ]; then
          138  +			continue
          139  +		fi
          140  +
          141  +		newfile="$(basename "${file}" .dll.a).lib"
          142  +		mv "${file}" "${newfile}"
          143  +	done
          144  +
          145  +	## .DLL.DEF -> .DEF
          146  +	for file in libtclkit*.dll.def; do
          147  +		if [ ! -f "${file}" ]; then
          148  +			continue
          149  +		fi
          150  +
          151  +		newfile="$(basename "${file}" .dll.def).def"
          152  +		mv "${file}" "${newfile}"
          153  +	done
          154  +
          155  +	# Determine name of created kit
          156  +	KITTARGET_NAME='__error__'
          157  +	if [ "${KITTARGET}" = "kitdll" ]; then
          158  +		## Find the library created
          159  +		for chkkittarget in libtclkit*.*; do
          160  +			if [ ! -f "${chkkittarget}" ]; then
          161  +				continue
          162  +			fi
          163  +
          164  +			if echo "${chkkittarget}" | egrep '\.(lib|def|a)$'; then
          165  +				continue
          166  +			fi
          167  +
          168  +			KITTARGET_NAME="${chkkittarget}"
          169  +
          170  +			break
          171  +		done
    83    172   
    84         -	# Create VFS directory
    85         -	mkdir "starpack.vfs"
    86         -	mkdir "starpack.vfs/lib"
          173  +		## Also create an executable named "kit" so that we can run it later
          174  +		${MAKE:-make} tclsh
          175  +		mv tclsh kit
          176  +	else
          177  +		## The executable is always named "kit"
          178  +		KITTARGET_NAME='kit'
          179  +	fi
          180  +	export KITTARGET_NAME
    87    181   
    88         -	## Copy in all built directories
    89         -	cp -r "${OTHERPKGSDIR}"/*/out/* 'starpack.vfs/'
          182  +	if [ "x${KITTARGET_NAME}" = 'x__error__' ]; then
          183  +		echo "Failed to locate kit target!" >&2
    90    184   
    91         -	## Rename the "vfs" package directory to what "boot.tcl" expects
    92         -	mv 'starpack.vfs/lib'/vfs* 'starpack.vfs/lib/vfs'
    93         -
    94         -	## Install "boot.tcl"
    95         -	cp 'boot.tcl' 'starpack.vfs/'
          185  +		exit 1
          186  +	fi
    96    187   
    97    188   	# Intall VFS onto kit
    98    189   	## Determine if we have a Tclkit to do this work
    99    190   	TCLKIT="${TCLKIT:-tclkit}"
   100    191   	if echo 'exit 0' | "${TCLKIT}" >/dev/null 2>/dev/null; then
   101    192   		## Install using existing Tclkit
   102    193   		### Call installer
   103         -		echo "Running: \"${TCLKIT}\" installvfs.tcl kit starpack.vfs \"${ENABLECOMPRESSION}\""
   104         -		"${TCLKIT}" installvfs.tcl kit starpack.vfs "${ENABLECOMPRESSION}" || exit 1
          194  +		echo "Running: \"${TCLKIT}\" installvfs.tcl \"${KITTARGET_NAME}\" starpack.vfs \"${ENABLECOMPRESSION}\""
          195  +		"${TCLKIT}" installvfs.tcl "${KITTARGET_NAME}" starpack.vfs "${ENABLECOMPRESSION}" || exit 1
   105    196   	else
   106    197   		## Bootstrap (cannot cross-compile)
   107    198   		### Call installer
   108    199   		cp kit runkit
   109         -		echo "set argv [list kit starpack.vfs {${ENABLECOMPRESSION}}]" > setup.tcl
          200  +		echo "set argv [list {${KITTARGET_NAME}} starpack.vfs {${ENABLECOMPRESSION}}]" > setup.tcl
   110    201   		echo 'if {[catch { clock seconds }]} { proc clock args { return 0 } }' >> setup.tcl
   111    202   		echo 'source installvfs.tcl' >> setup.tcl
   112    203   
   113    204   		echo 'Running: echo | ./runkit'
   114         -		echo | ./runkit || exit 1
          205  +		echo | ./runkit setup.tcl || exit 1
          206  +	fi
          207  +
          208  +	# Cleanup
          209  +	if [ "${KITTARGET}" = "kitdll" ]; then
          210  +		## Remove built interpreters if we are building KitDLL --
          211  +		## they're just tiny stubs anyway
          212  +		rm -f kit runkit
   115    213   	fi
   116    214   
   117    215   	exit 0
   118    216   ) || exit 1
   119    217   
   120    218   exit 0

Added kitsh/buildsrc/kitsh-0.0/Makefile.common.in version [537f4f602e].

            1  +CC = @CC@
            2  +RC = @RC@
            3  +OBJCOPY = @OBJCOPY@
            4  +CFLAGS = @CFLAGS@ @SHOBJFLAGS@
            5  +CPPFLAGS = @CPPFLAGS@ @DEFS@
            6  +WISH_CFLAGS = @WISH_CFLAGS@
            7  +LDFLAGS = @LDFLAGS@
            8  +SHOBJLDFLAGS = @SHOBJLDFLAGS@
            9  +LIBS = @LIBS@
           10  +ARCHS = @ARCHS@
           11  +STRIPLIBS = @STRIPLIBS@ @EXTRA_OBJS@
           12  +EXTRA_OBJS = @EXTRA_OBJS@
           13  +LDRUNPATH = @LDRUNPATH@
           14  +EXTRA_KIT_DEPS = @EXTRA_KIT_DEPS@
           15  +EXTRA_VFS_OBJS = @EXTRA_VFS_OBJS@
           16  +TCLSH_NATIVE = tclsh
           17  +
           18  +# Build targets
           19  +## VFS Build
           20  +cvfs_data_tcl.o: cvfs_data_tcl.c
           21  +cvfs_data_tcl.c: dir2c.tcl starpack.vfs cvfs_data.c
           22  +	"$(TCLSH_NATIVE)" dir2c.tcl tcl starpack.vfs > cvfs_data_tcl.c
           23  +
           24  +## Tcl scripts that need to be converted to C headers
           25  +cvfs.tcl.h: cvfs.tcl
           26  +	"$(TCLSH_NATIVE)" ./stringify.tcl cvfs.tcl > cvfs.tcl.h
           27  +
           28  +boot.tcl.h: boot.tcl
           29  +	"$(TCLSH_NATIVE)" ./stringify.tcl boot.tcl > boot.tcl.h
           30  +
           31  +zipvfs.tcl.h: zipvfs.tcl
           32  +	"$(TCLSH_NATIVE)" ./stringify.tcl zipvfs.tcl > zipvfs.tcl.h
           33  +
           34  +## Objects
           35  +kitInit.o: kitInit.c boot.tcl.h $(EXTRA_KIT_DEPS)
           36  +rechan.o: rechan.c
           37  +pwb.o: pwb.c
           38  +zlib.o: zlib.c
           39  +
           40  +### Windows resources
           41  +kit.res.o: kit.rc kit.ico
           42  +	$(RC) -o kit.res.o $(CPPFLAGS) kit.rc
           43  +
           44  +# Cleanup routines
           45  +clean:
           46  +	rm -f kit kit.res.o
           47  +	rm -f libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
           48  +	rm -f $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS)
           49  +	rm -f cvfs_data_tcl.c cvfs_data_tcl.o
           50  +	rm -f cvfs.tcl.h
           51  +	rm -f tclsh.o tclsh tclsh.exe
           52  +	rm -f wish.o wish wish.exe
           53  +
           54  +distclean: clean
           55  +	rm -f Makefile Makefile.in Makefile.common
           56  +	rm -f config.status config.log
           57  +	rm -f *~
           58  +	rm -rf starpack.vfs
           59  +	rm -rf autom4te.cache
           60  +
           61  +mrproper: distclean
           62  +	rm -f configure config.h boot.tcl.h zipvfs.tcl.h
           63  +
           64  +.PHONY: all clean distclean mrproper

Modified kitsh/buildsrc/kitsh-0.0/Makefile.kitdll.in from [54a46a52d1] to [f5f31c2c74].

     1         -CC = @CC@
     2         -OBJCOPY = @OBJCOPY@
     3         -CFLAGS = @CFLAGS@ @SHOBJFLAGS@ -Wall
     4         -CPPFLAGS = @CPPFLAGS@ @DEFS@ -DKITDLL_MAKE_LOADABLE=1
     5         -WISH_CFLAGS = @WISH_CFLAGS@
     6         -LDFLAGS = @LDFLAGS@
     7         -SHOBJLDFLAGS = @SHOBJLDFLAGS@
     8         -LIBS = @LIBS@
     9         -STATICLIBS = @ARCHS@
    10         -STRIPLIBS = @STRIPLIBS@ @EXTRA_OBJS@
    11         -OBJS = vfs_kitdll_data_tcl.o kitInit.o rechan.o pwb.o zlib.o
    12         -EXTRA_OBJS = @EXTRA_OBJS@
    13         -TCLSH_NATIVE = tclsh
            1  +OBJS = kitInit.o rechan.o pwb.o zlib.o
    14      2   
    15      3   # Default target
    16      4   all: libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
    17      5   
    18         -# Build targets
    19         -## VFS Build
    20         -vfs_kitdll_data_tcl.o: vfs_kitdll_data_tcl.c
    21         -vfs_kitdll_data_tcl.c: dir2c.tcl starpack.vfs vfs_kitdll_data.c
    22         -	"$(TCLSH_NATIVE)" dir2c.tcl tcl starpack.vfs > vfs_kitdll_data_tcl.c
    23         -
    24         -## Tclkit Build
    25         -kitInit.o: kitInit.c vfs_kitdll.tcl.h
    26         -vfs_kitdll.tcl.h: vfs_kitdll.tcl
    27         -	"$(TCLSH_NATIVE)" ./stringify.tcl vfs_kitdll.tcl > vfs_kitdll.tcl.h
    28         -
    29         -## Extensions
    30         -rechan.o: rechan.c
    31         -pwb.o: pwb.c
    32         -zlib.o: zlib.c
            6  +-include Makefile.common
    33      7   
    34      8   ## DLL Build
    35         -libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@: $(OBJS) $(EXTRA_OBJS)
            9  +libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@: $(OBJS) $(EXTRA_KIT_DEPS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS)
           10  +	$(CC) $(CPPFLAGS) $(CFLAGS) -o libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) @WHOLEARCHIVE@ $(ARCHS) @NOWHOLEARCHIVE@ $(LIBS)
    36     11   	-for striplib in $(STRIPLIBS); do $(OBJCOPY) --weaken "$${striplib}"; done
    37         -	$(CC) $(CPPFLAGS) $(CFLAGS) -o libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(OBJS) $(EXTRA_OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) @WHOLEARCHIVE@ $(STATICLIBS) @NOWHOLEARCHIVE@ $(LIBS)
           12  +	-$(CC) $(CPPFLAGS) $(CFLAGS) -o libtclkit-good@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) @WHOLEARCHIVE@ $(ARCHS) @NOWHOLEARCHIVE@ $(LIBS) && mv libtclkit-good@KITDLL_LIB_VERSION@.@SHOBJEXT@ libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
    38     13   
    39     14   # Test driver
    40     15   tclsh.o: tclsh.c
    41     16   tclsh: tclsh.o $(EXTRA_OBJS) libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
    42         -	$(CC) $(CPPFLAGS) $(CFLAGS) -o tclsh tclsh.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ -Wl,-rpath,.
           17  +	$(CC) $(CPPFLAGS) $(CFLAGS) -o tclsh tclsh.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ $(LDRUNPATH)
    43     18   
    44     19   wish.o: wish.c
    45     20   wish: wish.o $(EXTRA_OBJS) libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
    46         -	$(CC) $(CPPFLAGS) $(CFLAGS) $(WISH_CFLAGS) -o wish wish.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ -Wl,-rpath,.
    47         -
    48         -# Cleanup routeines
    49         -clean:
    50         -	rm -f libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
    51         -	rm -f $(OBJS)
    52         -	rm -f vfs_kitdll_data_tcl.c
    53         -	rm -f vfs_kitdll.tcl.h
    54         -	rm -f tclsh.o tclsh tclsh.exe
    55         -	rm -f wish.o wish wish.exe
    56         -
    57         -distclean: clean
    58         -	rm -f config.status config.log
    59         -	rm -f *~
    60         -	rm -f Makefile
    61         -	rm -rf starpack.vfs
    62         -
    63         -mrproper: distclean
    64         -
    65         -.PHONY: all clean distclean
           21  +	$(CC) $(CPPFLAGS) $(CFLAGS) $(WISH_CFLAGS) -o wish wish.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ $(LDRUNPATH)

Modified kitsh/buildsrc/kitsh-0.0/Makefile.tclkit.in from [6f33927faa] to [9a850eafbd].

     1         -CC = @CC@
     2         -RC = @RC@
     3         -CFLAGS = @CFLAGS@ @DEFS@ -DTK_LOCAL_APPINIT=TclKit_AppInit
     4         -CPPFLAGS = @CPPFLAGS@ @DEFS@ -DTK_LOCAL_APPINIT=TclKit_AppInit
     5         -LDFLAGS = @LDFLAGS@
     6         -LIBS = @LIBS@
     7         -ARCHS = @ARCHS@
     8      1   OBJS = kitInit.o main.o pwb.o rechan.o zlib.o winMain.o
     9         -EXTRA_OBJS = @EXTRA_OBJS@
    10      2   
    11      3   all: kit
    12      4   
    13         -kit.res.o: kit.rc kit.ico
    14         -	$(RC) -o kit.res.o $(CPPFLAGS) kit.rc
            5  +-include Makefile.common
    15      6   
    16         -kit: $(OBJS) $(EXTRA_OBJS) $(ARCHS)
    17         -	$(CC) $(CPPFLAGS) $(CFLAGS) -o kit $(OBJS) $(EXTRA_OBJS) $(ARCHS) $(LDFLAGS) $(LIBS)
    18         -
    19         -boot.tcl.h: boot.tcl
    20         -	./stringify.tcl boot.tcl > boot.tcl.h
    21         -
    22         -zipvfs.tcl.h: zipvfs.tcl
    23         -	./stringify.tcl zipvfs.tcl > zipvfs.tcl.h
    24         -
    25         -clean:
    26         -	rm -f kit $(OBJS) kit.res.o
    27         -
    28         -distclean: clean
    29         -	rm -f config.h Makefile config.log config.status
    30         -	rm -rf autom4te.cache
    31         -
    32         -mrproper: distclean
    33         -	rm -f configure config.h boot.tcl.h zipvfs.tcl.h
    34         -
    35         -.PHONY: all clean distclean
            7  +kit: $(OBJS) $(EXTRA_OBJS) $(EXTRA_KIT_DEPS) $(EXTRA_VFS_OBJS) $(ARCHS)
            8  +	$(CC) $(CPPFLAGS) $(CFLAGS) -o kit $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(ARCHS) $(LDFLAGS) $(LIBS)

Modified kitsh/buildsrc/kitsh-0.0/aclocal.m4 from [9a1977c3cc] to [1f1678240f].

    33     33   
    34     34   	if test -f "${tclconfigsh}"; then
    35     35   		. "${tclconfigsh}"
    36     36   
    37     37   		CFLAGS="${CFLAGS} ${TCL_INCLUDE_SPEC} -I${TCL_SRC_DIR}/generic -I${tclconfigshdir}"
    38     38   		CPPFLAGS="${CPPFLAGS} ${TCL_INCLUDE_SPEC} -I${TCL_SRC_DIR}/generic -I${tclconfigshdir}"
    39     39   		LIBS="${LIBS} ${TCL_LIBS}"
           40  +
           41  +		KITDLL_LIB_VERSION=`echo "${TCL_VERSION}${TCL_PATCH_LEVEL}" | sed 's@\.@@g'`
    40     42   	fi
    41     43   
    42     44   	AC_SUBST(CFLAGS)
    43     45   	AC_SUBST(CPPFLAGS)
    44     46   	AC_SUBST(LIBS)
           47  +	AC_SUBST(KITDLL_LIB_VERSION)
    45     48   
    46     49   	AC_MSG_RESULT([$tclconfigsh])
    47     50   ])
    48     51   
    49     52   AC_DEFUN(DC_DO_TK, [
    50     53   	AC_MSG_CHECKING([path to tk])
    51     54   	AC_ARG_WITH(tk, AC_HELP_STRING([--with-tk], [directory containing tk configuration (tkConfig.sh)]), [], [
................................................................................
   150    153   		DC_DO_STATIC_LINK_LIB([C++ Library (UNIX)], [-lstdc++])
   151    154   	])
   152    155   ])
   153    156   
   154    157   AC_DEFUN(DC_FIND_TCLKIT_LIBS, [
   155    158   	DC_SETUP_TCL_PLAT_DEFS
   156    159   
   157         -	for proj in mk4tcl tcl tclvfs tk; do
          160  +	dnl We will need this for the Tcl project, which we will always have
          161  +	DC_CHECK_FOR_WHOLE_ARCHIVE
          162  +
          163  +	for proj in mk4tcl tcl tclvfs tk zlib; do
   158    164   		AC_MSG_CHECKING([for libraries required for ${proj}])
   159    165   
   160         -		libdir="../../../${proj}/inst"
   161         -		libfiles="`find "${libdir}" -name '*.a' 2>/dev/null | tr "\n" ' '`"
   162         -		libfilesnostub="`find "${libdir}" -name '*.a' 2>/dev/null | grep -v 'stub' | tr "\n" ' '`"
          166  +		projlibdir="../../../${proj}/inst"
          167  +		projlibfiles="`find "${projlibdir}" -name '*.a' 2>/dev/null | tr "\n" ' '`"
          168  +		projlibfilesnostub="`find "${projlibdir}" -name '*.a' 2>/dev/null | grep -v 'stub' | tr "\n" ' '`"
   163    169   
   164         -		ARCHS="${ARCHS} ${libfiles}"
          170  +		AC_MSG_RESULT([${projlibfilesnostub}])
   165    171   
   166         -		AC_MSG_RESULT([${libfiles}])
          172  +		hide_symbols="1"
   167    173   
   168         -		if test "${libfilesnostub}" != ""; then
   169         -			if test "${proj}" = "mk4tcl"; then
          174  +		if test "${proj}" = "tcl"; then
          175  +			DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $projlibfilesnostub], [
          176  +				projlibfiles="${projlibfilesnostub}"
          177  +			], [
          178  +				DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $projlibfiles], [
          179  +					projlibfiles="${projlibfiles}"
          180  +				])
          181  +			])
          182  +
          183  +			hide_symbols="0"
          184  +		fi
          185  +
          186  +		if test "${proj}" = "mk4tcl"; then
          187  +			if test -n "${projlibfiles}"; then
   170    188   				AC_DEFINE(KIT_INCLUDES_MK4TCL, [1], [Specify this if you link against mkt4tcl])
          189  +
          190  +				kc_cv_feature_kit_includes_mk4tcl='1'
          191  +
   171    192   				DC_DO_STATIC_LINK_LIBCXX
   172    193   			fi
   173         -			if test "${proj}" = "tk"; then
          194  +		fi
          195  +
          196  +		if test "${proj}" = "tk"; then
          197  +			if test "${projlibfilesnostub}" != ""; then
   174    198   				DC_DO_TK
   175    199   				AC_DEFINE(KIT_INCLUDES_TK, [1], [Specify this if we link statically to Tk])
   176    200   				if test -n "${TK_VERSION}"; then
   177    201   					AC_DEFINE_UNQUOTED(KIT_TK_VERSION, "${TK_VERSION}${TK_PATCH_LEVEL}", [Specify the version of Tk])
   178    202   				fi
   179    203   
   180    204   				if test "$host_os" = "mingw32msvc" -o "$host_os" = "mingw32"; then
   181    205   					AC_DEFINE(KITSH_NEED_WINMAIN, [1], [Define if you need WinMain (Windows)])
   182    206   					CFLAGS="${CFLAGS} -mwindows"
   183    207   				fi
          208  +
          209  +				DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $projlibfilesnostub], [
          210  +					projlibfiles="${projlibfilesnostub}"
          211  +				], [
          212  +					DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $projlibfiles], [
          213  +						projlibfiles="${projlibfiles}"
          214  +					])
          215  +				])
          216  +
          217  +				hide_symbols="0"
   184    218   			fi
   185    219   		fi
          220  +
          221  +		if test "${hide_symbols}" = "1"; then
          222  +			STRIPLIBS="${STRIPLIBS} ${projlibfiles}"
          223  +		fi
          224  +
          225  +		dnl Do not explicitly link to Zlib, that will happen elsewhere
          226  +		if test "${proj}" = "zlib"; then
          227  +			continue
          228  +		fi
          229  +
          230  +		ARCHS="${ARCHS} ${projlibfiles}"
   186    231   	done
   187    232   
   188    233   	AC_SUBST(ARCHS)
          234  +	AC_SUBST(STRIPLIBS)
   189    235   ])
   190    236   
   191    237   AC_DEFUN(DC_SETUP_TCL_PLAT_DEFS, [
          238  +	AC_CANONICAL_BUILD
   192    239   	AC_CANONICAL_HOST
   193    240     
   194    241   	AC_MSG_CHECKING(host operating system)
   195    242   	AC_MSG_RESULT($host_os)
   196    243     
   197    244   	case $host_os in
   198    245   		mingw32*)
   199    246   			CFLAGS="${CFLAGS} -mno-cygwin -mms-bitfields"
          247  +			WISH_CFLAGS="-mwindows"
   200    248   
   201    249   			dnl If we are building for Win32, we need to define "BUILD_tcl" so that
   202    250   			dnl TCL_STORAGE_CLASS gets defined as DLLEXPORT, to make static linking
   203    251   			dnl work
   204    252   			AC_DEFINE(BUILD_tcl, [1], [Define if you need to pretend to be building Tcl (Windows)])
   205    253   			AC_DEFINE(BUILD_tk, [1], [Define if you need to pretend to be building Tk (Windows)])
   206    254   			;;
   207    255   		cygwin*)
   208    256   			CFLAGS="${CFLAGS} -mms-bitfields"
          257  +			WISH_CFLAGS="-mwindows"
   209    258   			;;
   210    259   	esac
          260  +
          261  +	AC_SUBST(WISH_CFLAGS)
   211    262   ])
   212    263   
   213    264   AC_DEFUN(DC_STATIC_LIBGCC, [
   214    265   	AC_MSG_CHECKING([how to link statically against libgcc])
   215    266   
   216    267   	SAVELDFLAGS="${LDFLAGS}"
   217    268   	staticlibgcc=""
................................................................................
   256    307   			AC_MSG_RESULT([found])
   257    308   			AC_DEFINE(HAVE_ACCEPTABLE_DLADDR, [1], [Define to 1 if you have an acceptable dladdr implementation with dli_fname])
   258    309   		], [
   259    310   			AC_MSG_RESULT([not found])
   260    311   		]
   261    312   	)
   262    313   ])
          314  +
          315  +dnl Usage:
          316  +dnl    DC_TEST_SHOBJFLAGS(shobjflags, shobjldflags, action-if-not-found)
          317  +dnl
          318  +AC_DEFUN(DC_TEST_SHOBJFLAGS, [
          319  +  AC_SUBST(SHOBJFLAGS)
          320  +  AC_SUBST(SHOBJLDFLAGS)
          321  +
          322  +  OLD_LDFLAGS="$LDFLAGS"
          323  +  SHOBJFLAGS=""
          324  +
          325  +  LDFLAGS="$OLD_LDFLAGS $1 $2"
          326  +
          327  +  AC_TRY_LINK([#include <stdio.h>
          328  +int unrestst(void);], [ printf("okay\n"); unrestst(); return(0); ], [ SHOBJFLAGS="$1"; SHOBJLDFLAGS="$2" ], [
          329  +  LDFLAGS="$OLD_LDFLAGS"
          330  +  $3
          331  +])
          332  +
          333  +  LDFLAGS="$OLD_LDFLAGS"
          334  +])
          335  +
          336  +AC_DEFUN(DC_GET_SHOBJFLAGS, [
          337  +  AC_SUBST(SHOBJFLAGS)
          338  +  AC_SUBST(SHOBJLDFLAGS)
          339  +
          340  +  AC_MSG_CHECKING(how to create shared objects)
          341  +
          342  +  if test -z "$SHOBJFLAGS" -a -z "$SHOBJLDFLAGS"; then
          343  +    DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic], [
          344  +      DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared], [
          345  +        DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -mimpure-text], [
          346  +          DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -mimpure-text], [
          347  +            DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -Wl,-G,-z,textoff], [
          348  +              DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -Wl,-G,-z,textoff], [
          349  +                DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
          350  +                  DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
          351  +                    DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-Wl,-dynamiclib -Wl,-flat_namespace -Wl,-undefined,suppress -Wl,-bind_at_load], [
          352  +                      DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress], [
          353  +                        DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib], [
          354  +                          AC_MSG_RESULT(cant)
          355  +                          AC_MSG_ERROR([We are unable to make shared objects.])
          356  +                        ])
          357  +                      ])
          358  +                    ])
          359  +                  ])
          360  +                ])
          361  +              ])
          362  +            ])
          363  +          ])
          364  +        ])
          365  +      ])
          366  +    ])
          367  +  fi
          368  +
          369  +  AC_MSG_RESULT($SHOBJLDFLAGS $SHOBJFLAGS)
          370  +])
          371  +
          372  +AC_DEFUN(DC_CHK_OS_INFO, [
          373  +	AC_CANONICAL_BUILD
          374  +	AC_CANONICAL_HOST
          375  +
          376  +	AC_SUBST(SHOBJEXT)
          377  +	AC_SUBST(AREXT)
          378  +        AC_SUBST(SHOBJFLAGS)
          379  +        AC_SUBST(SHOBJLDFLAGS)
          380  +
          381  +        AC_MSG_CHECKING(host operating system)
          382  +        AC_MSG_RESULT($host_os)
          383  +
          384  +	SHOBJEXT="so"
          385  +	AREXT="a"
          386  +
          387  +        case $host_os in
          388  +                darwin*)
          389  +			SHOBJEXT="dylib"
          390  +                        ;;
          391  +		hpux*)
          392  +			SHOBJEXT="sl"
          393  +			;;
          394  +		mingw*)
          395  +			SHOBJEXT="dll"
          396  +			SHOBJFLAGS="-mno-cygwin -mms-bitfields -DPIC"
          397  +			SHOBJLDFLAGS='-shared -Wl,--dll -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a -Wl,--export-all-symbols -Wl,--add-stdcall-alias'
          398  +			;;
          399  +	esac
          400  +])
          401  +
          402  +AC_DEFUN(DC_TEST_WHOLE_ARCHIVE_SHARED_LIB, [
          403  +
          404  +	SAVE_LIBS="${LIBS}"
          405  +
          406  +	LIBS="${WHOLEARCHIVE} $1 ${NOWHOLEARCHIVE} ${SAVE_LIBS}"
          407  +	AC_LINK_IFELSE(
          408  +		AC_LANG_PROGRAM([[
          409  +			]], [[
          410  +			]]
          411  +		),
          412  +		[
          413  +			LIBS="${SAVE_LIBS}"
          414  +
          415  +			$2
          416  +		], [
          417  +			LIBS="${SAVE_LIBS}"
          418  +
          419  +			$3
          420  +		]
          421  +	)
          422  +])
          423  +
          424  +AC_DEFUN(DC_CHECK_FOR_WHOLE_ARCHIVE, [
          425  +	AC_MSG_CHECKING([for how to link whole archive])
          426  +
          427  +	SAVE_CFLAGS="${CFLAGS}"
          428  +
          429  +	wholearchive=""
          430  +
          431  +	for check in "-Wl,--whole-archive -Wl,--no-whole-archive" "-Wl,-z,allextract -Wl,-z,defaultextract"; do
          432  +		CFLAGS="${SAVE_CFLAGS} ${check}"
          433  +
          434  +		AC_LINK_IFELSE(AC_LANG_PROGRAM([], []),
          435  +			[
          436  +				wholearchive="${check}"
          437  +
          438  +				break
          439  +			]
          440  +		)
          441  +
          442  +	done
          443  +
          444  +	CFLAGS="${SAVE_CFLAGS}"
          445  +
          446  +	if test -z "${wholearchive}"; then
          447  +		AC_MSG_RESULT([not found])
          448  +	else
          449  +		AC_MSG_RESULT([${wholearchive}])
          450  +
          451  +		WHOLEARCHIVE=`echo "${wholearchive}" | cut -f 1 -d ' '`
          452  +		NOWHOLEARCHIVE=`echo "${wholearchive}" | cut -f 2 -d ' '`
          453  +	fi
          454  +
          455  +	AC_SUBST(WHOLEARCHIVE)
          456  +	AC_SUBST(NOWHOLEARCHIVE)
          457  +])
          458  +
          459  +AC_DEFUN(DC_SETLDRUNPATH, [
          460  +	OLD_LDFLAGS="${LDFLAGS}"
          461  +
          462  +	for testldflags in "-Wl,-rpath -Wl,$1" "-Wl,-R -Wl,$1"; do
          463  +		LDFLAGS="${OLD_LDFLAGS} ${testldflags}"
          464  +		AC_TRY_LINK([#include <stdio.h>], [ return(0); ], [
          465  +			LDRUNPATH="$LDRUNPATH $testldflags"
          466  +
          467  +			break
          468  +		])
          469  +	done
          470  +
          471  +	LDFLAGS="${OLD_LDFLAGS}"
          472  +
          473  +	AC_SUBST(LDRUNPATH)
          474  +])

Modified kitsh/buildsrc/kitsh-0.0/boot.tcl from [6dee5fa1e9] to [19424b6588].

     1      1   proc tclInit {} {
     2      2   	rename tclInit {}
     3      3   
     4      4   	global auto_path tcl_library tcl_libPath
     5      5   	global tcl_version tcl_rcFileName
     6      6     
     7         -	set noe [info nameofexecutable]
            7  +	set mountpoint [subst "$::TCLKIT_MOUNTPOINT_VAR"]
     8      8   
     9      9   	# Resolve symlinks
    10         -	set noe [file dirname [file normalize [file join $noe __dummy__]]]
           10  +	set mountpoint [file dirname [file normalize [file join $mountpoint __dummy__]]]
    11     11   
    12         -	set tcl_library [file join $noe lib tcl$tcl_version]
    13         -	set tcl_libPath [list $tcl_library [file join $noe lib]]
    14         -
    15         -	# get rid of a build residue
    16         -	unset -nocomplain ::tclDefaultLibrary
           12  +	set tcl_library [file join $mountpoint lib tcl$tcl_version]
           13  +	set tcl_libPath [list $tcl_library [file join $mountpoint lib]]
    17     14   
    18     15   	# the following code only gets executed once on startup
    19         -	if {[info exists tcl_rcFileName]} {
           16  +	if {[info exists ::TCLKIT_INITVFS]} {
           17  +		catch {
           18  +			load {} vfs
           19  +		}
           20  +
    20     21   		# lookup and emulate "source" of lib/vfs/{vfs*.tcl,mk4vfs.tcl}
    21     22   		switch -- $::tclKitStorage {
    22     23   			"mk4" {
    23         -				load {} vfs
    24         -
    25     24   				# must use raw MetaKit calls because VFS is not yet in place
    26     25   				set d [mk::select exe.dirs parent 0 name lib]
    27     26   				set d [mk::select exe.dirs parent $d name vfs]
    28     27       
    29     28   				foreach x {vfsUtils vfslib mk4vfs} {
    30     29   					set n [mk::select exe.dirs!$d.files name $x.tcl]
    31     30   					set s [mk::get exe.dirs!$d.files!$n contents]
................................................................................
    70     69   					}
    71     70   				}
    72     71   
    73     72   				seek $::tclKitStorage_fd 0
    74     73   				set vfsHandler [list ::vfs::zip::handler $::tclKitStorage_fd]
    75     74   				unset ::tclKitStorage_fd
    76     75   			}
           76  +			"cvfs" {
           77  +				set vfsHandler [list ::vfs::cvfs::vfshandler tcl]
           78  +
           79  +				# Load these, the original Tclkit does so it should be safe.
           80  +				foreach vfsfile [list vfsUtils vfslib] {
           81  +					unset -nocomplain s
           82  +
           83  +					catch {
           84  +						set s [::vfs::cvfs::data::getData tcl "lib/vfs/${vfsfile}.tcl"]
           85  +					}
           86  +
           87  +					if {![info exists s]} {
           88  +						continue
           89  +					}
           90  +
           91  +					uplevel #0 $s
           92  +				}
           93  +			}
    77     94   		}
    78     95   
    79     96   		# mount the executable, i.e. make all runtime files available
    80         -		vfs::filesystem mount $noe $vfsHandler
           97  +		vfs::filesystem mount $mountpoint $vfsHandler
    81     98   
    82     99   		# alter path to find encodings
    83    100   		if {[info tclversion] eq "8.4"} {
    84    101   			load {} pwb
    85    102   			librarypath [info library]
    86    103   		} else {
    87    104   			encoding dirs [list [file join [info library] encoding]] ;# TIP 258
................................................................................
    90    107   		# fix system encoding, if it wasn't properly set up (200207.004 bug)
    91    108   		if {[encoding system] eq "identity"} {
    92    109   			if {[info exists ::tclkit_system_encoding] && $::tclkit_system_encoding != ""} {
    93    110   				catch {
    94    111   					encoding system $::tclkit_system_encoding
    95    112   				}
    96    113   			}
    97         -			unset -nocomplain ::tclkit_system_encoding
    98    114   		}
    99    115   
   100    116   		# If we've still not been able to set the encoding, revert to Tclkit defaults
   101    117   		if {[encoding system] eq "identity"} {
   102    118   			catch {
   103    119   				switch $::tcl_platform(platform) {
   104    120   					windows		{ encoding system cp1252 }
   105    121   					macintosh	{ encoding system macRoman }
   106    122   				        default		{ encoding system iso8859-1 }
   107    123   				}
   108    124   			}
   109    125   		}
          126  +
          127  +		# Re-evaluate mountpoint with correct encoding set
          128  +		set mountpoint [subst "$::TCLKIT_MOUNTPOINT_VAR"]
   110    129   
   111    130   		# now remount the executable with the correct encoding
   112    131   		vfs::filesystem unmount [lindex [::vfs::filesystem info] 0]
   113    132   
   114         -		set noe [info nameofexecutable]
          133  +		# Resolve symlinks
          134  +		set mountpoint [file dirname [file normalize [file join $mountpoint __dummy__]]]
   115    135   
   116         -		# Resolve symlinks
   117         -		set noe [file dirname [file normalize [file join $noe __dummy__]]]
          136  +		set tcl_library [file join $mountpoint lib tcl$tcl_version]
          137  +		set tcl_libPath [list $tcl_library [file join $mountpoint lib]]
   118    138   
   119         -		set tcl_library [file join $noe lib tcl$tcl_version]
   120         -		set tcl_libPath [list $tcl_library [file join $noe lib]]
   121         -
   122         -		vfs::filesystem mount $noe $vfsHandler
          139  +		vfs::filesystem mount $mountpoint $vfsHandler
   123    140   	}
   124    141     
   125    142   	# load config settings file if present
   126    143   	namespace eval ::vfs { variable tclkit_version 1 }
   127         -	catch { uplevel #0 [list source [file join $noe config.tcl]] }
          144  +	catch { uplevel #0 [list source [file join $mountpoint config.tcl]] }
   128    145   
          146  +	# Perform expected initialization
   129    147   	uplevel #0 [list source [file join $tcl_library init.tcl]]
   130    148     
   131    149   	# reset auto_path, so that init.tcl's search outside of tclkit is cancelled
   132    150   	set auto_path $tcl_libPath
   133    151   
   134    152   	# This loads everything needed for "clock scan" to work
   135    153   	# "clock scan" is used within "vfs::zip", which may be
   136    154   	# loaded before this is run causing the root VFS to break
   137    155   	catch { clock scan }
   138    156   
   139         -	# Cleanup
   140         -	unset ::tclKitStorage
   141         -	unset -nocomplain ::tclKitStorage_fd
          157  +	if {$::TCLKIT_TYPE == "kitdll"} {
          158  +		# Set a maximum seek to avoid reading the entire file looking for a
          159  +		# zip header
          160  +		catch { 
          161  +			package require vfs::zip
          162  +			set ::zip::max_header_seek 8192
          163  +		}
          164  +
          165  +		# Now that the initialization is complete, mount the user VFS if needed
          166  +		## Mount the VFS from the Shared Object
          167  +		if {[info exists ::TCLKIT_INITVFS] && [info exists ::tclKitFilename]} {
          168  +			catch {
          169  +				vfs::zip::Mount $::tclKitFilename "/.KITDLL_USER"
          170  +
          171  +				lappend auto_path [file normalize "/.KITDLL_USER/lib"]
          172  +			}
          173  +		}
          174  +
          175  +		## Mount the VFS from executable
          176  +		if {[info exists ::TCLKIT_INITVFS]} {
          177  +			catch {
          178  +				vfs::zip::Mount [info nameofexecutable] "/.KITDLL_APP"
          179  +
          180  +				lappend auto_path [file normalize "/.KITDLL_APP/lib"]
          181  +			}
          182  +		}
          183  +
          184  +	}
          185  +
          186  +	# Clean up
          187  +	unset -nocomplain ::zip::max_header_seek
          188  +	unset -nocomplain ::TCLKIT_TYPE ::TCLKIT_INITVFS
          189  +	unset -nocomplain ::TCLKIT_MOUNTPOINT ::TCLKIT_VFSSOURCE ::TCLKIT_MOUNTPOINT_VAR ::TCLKIT_VFSSOURCE_VAR
          190  +	unset -nocomplain ::tclKitStorage ::tclKitStorage_fd ::tclKitFilename
          191  +	unset -nocomplain ::tclkit_system_encoding
   142    192   }

Modified kitsh/buildsrc/kitsh-0.0/configure.ac from [da08c3d389] to [20795b4d45].

     3      3   
     4      4   dnl Checks for programs.
     5      5   AC_PROG_CC
     6      6   AC_PROG_MAKE_SET
     7      7   AC_PROG_INSTALL
     8      8   AC_AIX
     9      9   AC_GNU_SOURCE
           10  +
           11  +dnl Find out if we should build a DLL or an Executable
           12  +TARGET="tclkit"
           13  +EXTRA_KIT_DEPS=""
           14  +AC_MSG_CHECKING([what target to build])
           15  +AC_ARG_ENABLE(kitdll, AC_HELP_STRING([--enable-kitdll], [Enable building KitDLL instead of Tclkit (default: no)]), [
           16  +	AS_CASE([$enableval],
           17  +		[yes|kitdll], [
           18  +			TARGET="kitdll"
           19  +		],
           20  +		no, [
           21  +			true
           22  +		], [
           23  +			AC_MSG_RESULT([unknown])
           24  +
           25  +			AC_MSG_ERROR([Invalid option: $enableval])
           26  +		]
           27  +	)
           28  +])
           29  +AC_MSG_RESULT([$TARGET])
    10     30   
    11     31   dnl Find the appropriate libraries to link to
    12     32   AC_SEARCH_LIBS(acos, m,, [ AC_MSG_WARN([Couldn't find acos (normally in libm)!]) ])
    13     33   AC_SEARCH_LIBS(dlsym, dl,, [ AC_MSG_WARN([Couldn't find dlsym (normally in libdl)!]) ])
    14     34   
    15         -dnl Figure out how to statically link to libgcc, if needed
    16         -DC_STATIC_LIBGCC
           35  +AS_IF([test "$TARGET" = "tclkit"], [
           36  +	dnl We have Tclkit
           37  +
           38  +	dnl Figure out how to statically link to libgcc, if needed
           39  +	DC_STATIC_LIBGCC
           40  +
           41  +	dnl Specify local Appinit function
           42  +	AC_DEFINE(TK_LOCAL_APPINIT, [TclKit_AppInit], [Tclkit appinit function])
           43  +], [
           44  +	dnl We have KitDLL
           45  +
           46  +	dnl Determine system information
           47  +	DC_CHK_OS_INFO
           48  +
           49  +	dnl Determine how to create a shared object
           50  +	DC_GET_SHOBJFLAGS
           51  +
           52  +	dnl Determine if we have "objcopy" available to weaken non-Tcl/Tk symbols
           53  +	AC_CHECK_TOOL(OBJCOPY, objcopy, [:])
           54  +
           55  +	dnl Define KitDLL usage
           56  +	AC_DEFINE([TCLKIT_DLL], [1], [Define if you are using a KitDLL rather than a Tclkit])
           57  +])
           58  +
           59  +dnl Set linker rpath for tclsh/wish
           60  +DC_SETLDRUNPATH([.])
    17     61   
    18     62   dnl Find the appropriate Tcl headers and libraries
    19     63   DC_DO_TCL
    20     64   
    21     65   dnl Find archives we need to link to
    22     66   DC_FIND_TCLKIT_LIBS
    23     67   
    24     68   dnl Find extra objects we need to link as a part of "kit"
    25     69   AC_SUBST(EXTRA_OBJS)
           70  +AC_SUBST(EXTRA_VFS_OBJS)
    26     71   
    27     72   dnl Check for Windows Resource Compiler
    28     73   AC_CHECK_TOOL([RC], [windres], [false])
    29     74   
    30     75   dnl If we found the resource compiler, add "kit.res.o" to our list of objects to build
    31     76   dnl (as long as the source for such an object exists)
    32         -if ! test "$RC" = "false"; then
    33         -	if test -f kit.rc; then
           77  +AS_IF([test "$RC" != "false"], [
           78  +	AS_IF([test -f kit.rc], [
    34     79   		EXTRA_OBJS="$EXTRA_OBJS kit.res.o"
    35         -	fi
    36         -fi
           80  +	])
           81  +])
    37     82   
    38     83   dnl Check for Tcl features
    39     84   SAVE_LIBS="${LIBS}"
    40     85   LIBS="${ARCHS} ${LIBS}"
           86  +
    41     87   dnl Determine if we have "Tcl_SetStartupScript" (8.6.x) or "TclSetStartupScriptPath" (8.4.x)
    42     88   AC_CHECK_FUNCS(Tcl_SetStartupScript TclSetStartupScriptPath)
           89  +
    43     90   dnl Check for the ability to get the current system encoding
    44     91   AC_CHECK_FUNCS(Tcl_GetEncodingNameFromEnvironment Tcl_SetSystemEncoding)
    45     92   LIBS="${SAVE_LIBS}"
    46     93   
    47     94   dnl Check for optional headers
    48     95   AC_HEADER_STDC
    49     96   AC_CHECK_HEADERS(unistd.h string.h strings.h)
................................................................................
    56    103   
    57    104   dnl Find zlib
    58    105   AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib], [directory containing zlib]), [
    59    106   	CPPFLAGS="${CPPFLAGS} -I${with_zlib}/include -I${with_zlib}"
    60    107   	CFLAGS="${CFLAGS} -I${with_zlib}/include -I${with_zlib}"
    61    108   	LDFLAGS="${LDFLAGS} -L${with_zlib}/lib -L${with_zlib}"
    62    109   ])
          110  +
          111  +dnl Only needed for Tclkit
    63    112   DC_DO_STATIC_LINK_LIB(zlib, -lz,, [
    64    113   	DC_DO_STATIC_LINK_LIB(zlib, -lzlib,, [
    65    114   		AC_SEARCH_LIBS(inflate, z zlib,, [
    66    115   			AC_MSG_WARN([Couldn't find inflate (normally in zlib)!])
    67    116   		])
    68    117   	])
    69    118   ])
    70    119   
    71    120   dnl Determine which storage mechanism to use
    72    121   AC_MSG_CHECKING([which Tclkit Storage mechanism to use])
    73         -AC_ARG_ENABLE(kit-storage, AC_HELP_STRING([--enable-kit-storage={zip|mk4}], [Use mk4 for storage (default: auto)]), [
    74         -	case "$enableval" in
    75         -		mk4)
    76         -			AC_MSG_RESULT([mk4])
    77         -			AC_DEFINE([KIT_STORAGE_MK4], [1], [Define if you are going to use Metakit4 for kit storage])
    78         -			;;
    79         -		zip)
    80         -			AC_MSG_RESULT([zip])
    81         -			AC_DEFINE([KIT_STORAGE_ZIP], [1], [Define if you are going to use ZIP for kit storage])
    82         -			;;
    83         -		yes)
          122  +
          123  +storage_mech="auto"
          124  +AC_ARG_ENABLE(kit-storage, AC_HELP_STRING([--enable-kit-storage={zip|mk4|cvfs}], [Specify storage mechanism to use for built-in VFS (default: auto)]), [
          125  +	AS_CASE(["$enableval"],
          126  +		mk4, [
          127  +			storage_mech="mk4"
          128  +		],
          129  +		zip, [
          130  +			storage_mech="zip"
          131  +		],
          132  +		cvfs, [
          133  +			storage_mech="cvfs"
          134  +		],
          135  +		yes, [
    84    136   			# If they just want to enable kit storage, but nothing specifically, do nothing
    85         -			AC_MSG_RESULT([auto])
    86         -			;;
    87         -		auto)
          137  +			storage_mech="auto"
          138  +		],
          139  +		auto, [
    88    140   			# Auto is how it works by default
    89         -			AC_MSG_RESULT([auto])
    90         -			;;
    91         -		no)
          141  +			storage_mech="auto"
          142  +		],
          143  +		no, [
    92    144   			# You can't disable kit storage
    93    145   			AC_MSG_RESULT([fail])
    94    146   			AC_MSG_ERROR([Kit Storage cannot be disabled])
    95         -			;;
    96         -		*)
          147  +		],
          148  +		[
    97    149   			AC_MSG_RESULT([fail])
    98    150   			AC_MSG_ERROR([Unknown kit storage type: $enableval])
    99         -			;;
   100         -	esac
   101         -], [
   102         -	AC_MSG_RESULT([auto])
          151  +		]
          152  +	)
          153  +])
          154  +
          155  +dnl Explicitly define the storage mechanism
          156  +AS_IF([test "$storage_mech" = "auto"], [
          157  +	AS_IF([test "$TARGET" = 'tclkit'], [
          158  +		AS_IF([test "x$kc_cv_feature_kit_includes_mk4tcl" = 'x1'], [
          159  +			storage_mech="mk4"
          160  +		], [
          161  +			storage_mech="zip"
          162  +		])
          163  +	], [
          164  +		storage_mech="cvfs"
          165  +	])
   103    166   ])
   104    167   
          168  +dnl Note result
          169  +AC_MSG_RESULT([$storage_mech])
          170  +
          171  +dnl Define appropriate macros for the storage mechanism
          172  +AS_CASE([$storage_mech],
          173  +	mk4, [
          174  +		AC_DEFINE([KIT_STORAGE_MK4], [1], [Define if you are going to use Metakit4 for kit storage])
          175  +	],
          176  +	zip, [
          177  +		AC_DEFINE([KIT_STORAGE_ZIP], [1], [Define if you are going to use ZIP for kit storage])
          178  +
          179  +		dnl Add appropriate dependencies
          180  +		EXTRA_KIT_DEPS="zipvfs.tcl.h"
          181  +	],
          182  +	cvfs, [
          183  +		AC_DEFINE([KIT_STORAGE_CVFS], [1], [Define if you are going to use C-VFS for kit storage])
          184  +
          185  +		dnl Define that C-VFS should be make [load]-able
          186  +		AC_DEFINE([CVFS_MAKE_LOADABLE], [1], [Specify that the C-VFS should be able to be loaded])
          187  +
          188  +		dnl Add appropriate dependencies
          189  +		EXTRA_KIT_DEPS="cvfs.tcl.h"
          190  +		EXTRA_VFS_OBJS="${EXTRA_VFS_OBJS} cvfs_data_tcl.o"
          191  +	]
          192  +)
          193  +
          194  +AC_SUBST(EXTRA_KIT_DEPS)
          195  +
          196  +dnl Put correct Makefile template in place
          197  +rm -f Makefile.in
          198  +cp Makefile.${TARGET}.in Makefile.in
          199  +
   105    200   dnl Produce output
   106         -AC_OUTPUT(Makefile)
          201  +AC_OUTPUT(Makefile Makefile.common)

Modified kitsh/buildsrc/kitsh-0.0/cvfs.tcl from [662da588b0] to [20e6e11465].

     1      1   #! /usr/bin/env tcl
     2      2   
     3      3   package require vfs
     4      4   
     5         -namespace eval ::vfs::kitdll {}
            5  +namespace eval ::vfs::cvfs {}
     6      6   
     7      7   # Convience functions
     8         -proc ::vfs::kitdll::Mount {hashkey local} {
     9         -	vfs::filesystem mount $local [list ::vfs::kitdll::vfshandler $hashkey]
            8  +proc ::vfs::cvfs::Mount {hashkey local} {
            9  +	vfs::filesystem mount $local [list ::vfs::cvfs::vfshandler $hashkey]
    10     10   	catch {
    11         -		vfs::RegisterMount $local [list ::vfs::kitdll::Unmount]
           11  +		vfs::RegisterMount $local [list ::vfs::cvfs::Unmount]
    12     12   	}
    13     13   }
    14     14   
    15         -proc ::vfs::kitdll::Unmount {local} {
           15  +proc ::vfs::cvfs::Unmount {local} {
    16     16   	vfs::filesystem unmount $local
    17     17   }
    18     18   
    19     19   # Implementation
    20     20   ## I/O Handlers (pass to appropriate hashkey)
    21         -namespace eval ::vfs::kitdll::data {}
    22         -proc ::vfs::kitdll::data::getChildren args {
           21  +namespace eval ::vfs::cvfs::data {}
           22  +proc ::vfs::cvfs::data::getChildren args {
    23     23   	set hashkey [lindex $args 0]
    24     24   
    25         -	set cmd "::vfs::kitdll::data::${hashkey}::getChildren"
           25  +	set cmd "::vfs::cvfs::data::${hashkey}::getChildren"
    26     26   	set cmd [linsert $args 0 $cmd]
    27     27   
    28     28   	eval $cmd
    29     29   }
    30     30   
    31         -proc ::vfs::kitdll::data::getMetadata args {
           31  +proc ::vfs::cvfs::data::getMetadata args {
    32     32   	set hashkey [lindex $args 0]
    33     33   
    34         -	set cmd "::vfs::kitdll::data::${hashkey}::getMetadata"
           34  +	set cmd "::vfs::cvfs::data::${hashkey}::getMetadata"
    35     35   	set cmd [linsert $args 0 $cmd]
    36     36   
    37     37   	eval $cmd
    38     38   }
    39     39   
    40         -proc ::vfs::kitdll::data::getData args {
           40  +proc ::vfs::cvfs::data::getData args {
    41     41   	set hashkey [lindex $args 0]
    42     42   
    43         -	set cmd "::vfs::kitdll::data::${hashkey}::getData"
           43  +	set cmd "::vfs::cvfs::data::${hashkey}::getData"
    44     44   	set cmd [linsert $args 0 $cmd]
    45     45   
    46     46   	eval $cmd
    47     47   }
    48     48   
    49     49   ## VFS and Chan I/O
    50     50   ### Dispatchers
    51         -proc ::vfs::kitdll::vfshandler {hashkey subcmd args} {
           51  +proc ::vfs::cvfs::vfshandler {hashkey subcmd args} {
    52     52   	set cmd $args
    53         -	set cmd [linsert $cmd 0 "::vfs::kitdll::vfsop_${subcmd}" $hashkey]
           53  +	set cmd [linsert $cmd 0 "::vfs::cvfs::vfsop_${subcmd}" $hashkey]
    54     54   
    55     55   	return [eval $cmd]
    56     56   }
    57     57   
    58         -proc ::vfs::kitdll::chanhandler {hashkey subcmd args} {
           58  +proc ::vfs::cvfs::chanhandler {hashkey subcmd args} {
    59     59   	set cmd $args
    60         -	set cmd [linsert $cmd 0 "::vfs::kitdll::chanop_${subcmd}" $hashkey]
           60  +	set cmd [linsert $cmd 0 "::vfs::cvfs::chanop_${subcmd}" $hashkey]
    61     61   
    62     62   	return [eval $cmd]
    63     63   }
    64     64   
    65     65   ### Actual handlers
    66     66   #### Channel operation handlers
    67         -proc ::vfs::kitdll::chanop_initialize {hashkey chanId mode} {
           67  +proc ::vfs::cvfs::chanop_initialize {hashkey chanId mode} {
    68     68   	return [list initialize finalize watch read seek]
    69     69   }
    70     70   
    71         -proc ::vfs::kitdll::chanop_finalize {hashkey chanId} {
    72         -	unset -nocomplain ::vfs::kitdll::chandata([list $hashkey $chanId])
           71  +proc ::vfs::cvfs::chanop_finalize {hashkey chanId} {
           72  +	unset -nocomplain ::vfs::cvfs::chandata([list $hashkey $chanId])
    73     73   
    74     74   	return
    75     75   }
    76     76   
    77         -proc ::vfs::kitdll::chanop_watch {hashkey chanId eventSpec} {
    78         -	array set chaninfo $::vfs::kitdll::chandata([list $hashkey $chanId])
           77  +proc ::vfs::cvfs::chanop_watch {hashkey chanId eventSpec} {
           78  +	array set chaninfo $::vfs::cvfs::chandata([list $hashkey $chanId])
    79     79   
    80     80   	set chaninfo(watching) $eventSpec
    81     81   
    82         -	set ::vfs::kitdll::chandata([list $hashkey $chanId]) [array get chaninfo]
           82  +	set ::vfs::cvfs::chandata([list $hashkey $chanId]) [array get chaninfo]
    83     83   
    84     84   	if {[lsearch -exact $chaninfo(watching) "read"] != -1} {
    85     85   		after 0 [list catch "chan postevent $chanId [list {read}]"]
    86     86   	}
    87     87   
    88     88   	return
    89     89   }
    90     90   
    91         -proc ::vfs::kitdll::chanop_read {hashkey chanId bytes} {
    92         -	array set chaninfo $::vfs::kitdll::chandata([list $hashkey $chanId])
           91  +proc ::vfs::cvfs::chanop_read {hashkey chanId bytes} {
           92  +	array set chaninfo $::vfs::cvfs::chandata([list $hashkey $chanId])
    93     93   
    94     94   	set pos $chaninfo(pos)
    95     95   	set len $chaninfo(len)
    96     96   
    97     97   	if {[lsearch -exact $chaninfo(watching) "read"] != -1} {
    98     98   		after 0 [list catch "chan postevent $chanId [list {read}]"]
    99     99   	}
................................................................................
   103    103   	}
   104    104   
   105    105   	set end [expr {$pos + $bytes}]
   106    106   	if {$end > $len} {
   107    107   		set end $len
   108    108   	}
   109    109   
   110         -	set data [::vfs::kitdll::data::getData $hashkey $chaninfo(file) $pos $end]
          110  +	set data [::vfs::cvfs::data::getData $hashkey $chaninfo(file) $pos $end]
   111    111   
   112    112   	set dataLen [string length $data]
   113    113   	incr pos $dataLen
   114    114   
   115    115   	set chaninfo(pos) $pos
   116    116   
   117         -	set ::vfs::kitdll::chandata([list $hashkey $chanId]) [array get chaninfo]
          117  +	set ::vfs::cvfs::chandata([list $hashkey $chanId]) [array get chaninfo]
   118    118   
   119    119   	return $data
   120    120   }
   121    121   
   122         -proc ::vfs::kitdll::chanop_seek {hashkey chanId offset origin} {
   123         -	array set chaninfo $::vfs::kitdll::chandata([list $hashkey $chanId])
          122  +proc ::vfs::cvfs::chanop_seek {hashkey chanId offset origin} {
          123  +	array set chaninfo $::vfs::cvfs::chandata([list $hashkey $chanId])
   124    124   
   125    125   	set pos $chaninfo(pos)
   126    126   	set len $chaninfo(len)
   127    127   
   128    128   	switch -- $origin {
   129    129   		"start" - "0" {
   130    130   			set pos $offset
................................................................................
   142    142   	}
   143    143   
   144    144   	if {$pos > $len} {
   145    145   		set pos $len
   146    146   	}
   147    147   
   148    148   	set chaninfo(pos) $pos
   149         -	set ::vfs::kitdll::chandata([list $hashkey $chanId]) [array get chaninfo]
          149  +	set ::vfs::cvfs::chandata([list $hashkey $chanId]) [array get chaninfo]
   150    150   
   151    151   	return $pos
   152    152   }
   153    153   
   154    154   #### VFS operation handlers
   155         -proc ::vfs::kitdll::vfsop_stat {hashkey root relative actualpath} {
          155  +proc ::vfs::cvfs::vfsop_stat {hashkey root relative actualpath} {
   156    156   	catch {
   157         -		set ret [::vfs::kitdll::data::getMetadata $hashkey $relative]
          157  +		set ret [::vfs::cvfs::data::getMetadata $hashkey $relative]
   158    158   	}
   159    159   
   160    160   	if {![info exists ret]} {
   161    161   		vfs::filesystem posixerror $::vfs::posix(ENOENT)
   162    162   	}
   163    163   
   164    164   	return $ret
   165    165   }
   166    166   
   167         -proc ::vfs::kitdll::vfsop_access {hashkey root relative actualpath mode} {
   168         -	set ret [::vfs::kitdll::data::getMetadata $hashkey $relative]
          167  +proc ::vfs::cvfs::vfsop_access {hashkey root relative actualpath mode} {
          168  +	set ret [::vfs::cvfs::data::getMetadata $hashkey $relative]
   169    169   
   170    170   	if {$mode & 0x2} {
   171    171   		vfs::filesystem posixerror $::vfs::posix(EROFS)
   172    172   	}
   173    173   
   174    174   	return 1
   175    175   }
   176    176   
   177         -proc ::vfs::kitdll::vfsop_matchindirectory {hashkey root relative actualpath pattern types} {
          177  +proc ::vfs::cvfs::vfsop_matchindirectory {hashkey root relative actualpath pattern types} {
   178    178   	set ret [list]
   179    179   
   180    180   	catch {
   181         -		array set metadata [::vfs::kitdll::data::getMetadata $hashkey $relative]
          181  +		array set metadata [::vfs::cvfs::data::getMetadata $hashkey $relative]
   182    182   	}
   183    183   
   184    184   	if {![info exists metadata]} {
   185    185   		return [list]
   186    186   	}
   187    187   
   188    188   	if {$pattern == ""} {
   189    189   		set children [list $relative]
   190    190   	} else {
   191         -		set children [::vfs::kitdll::data::getChildren $hashkey $relative]
          191  +		set children [::vfs::cvfs::data::getChildren $hashkey $relative]
   192    192   	}
   193    193   
   194    194   	foreach child $children {
   195    195   		if {$pattern != ""} {
   196    196   			if {![string match $pattern $child]} {
   197    197   				continue
   198    198   			}
   199    199   		}
   200    200   
   201    201   		unset -nocomplain metadata
   202    202   		catch {
   203         -			array set metadata [::vfs::kitdll::data::getMetadata $hashkey $child]
          203  +			array set metadata [::vfs::cvfs::data::getMetadata $hashkey $child]
   204    204   		}
   205    205   
   206    206   		if {[string index $root end] == "/"} {
   207    207   			set child "${root}${child}"
   208    208   		} else {
   209    209   			set child "${root}/${child}"
   210    210   		}
................................................................................
   238    238   
   239    239   		lappend ret $child
   240    240   	}
   241    241   
   242    242   	return $ret
   243    243   }
   244    244   
   245         -proc ::vfs::kitdll::vfsop_fileattributes {hashkey root relative actualpath {index -1} {value ""}} {
          245  +proc ::vfs::cvfs::vfsop_fileattributes {hashkey root relative actualpath {index -1} {value ""}} {
   246    246   	set attrs [list -owner -group -permissions]
   247    247   
   248    248   	if {$value != ""} {
   249    249   		vfs::filesystem posixerror $::vfs::posix(EROFS)
   250    250   	}
   251    251   
   252    252   	if {$index == -1} {
   253    253   		return $attrs
   254    254   	}
   255    255   
   256         -	array set metadata [::vfs::kitdll::data::getMetadata $hashkey $relative]
          256  +	array set metadata [::vfs::cvfs::data::getMetadata $hashkey $relative]
   257    257   
   258    258   	set attr [lindex $attrs $index]
   259    259   
   260    260   	switch -- $attr {
   261    261   		"-owner" {
   262    262   			return $metadata(uid)
   263    263   		}
................................................................................
   272    272   			return [format {0%o} $metadata(mode)]
   273    273   		}
   274    274   	}
   275    275   
   276    276   	return -code error "Invalid index"
   277    277   }
   278    278   
   279         -proc ::vfs::kitdll::vfsop_open {hashkey root relative actualpath mode permissions} {
          279  +proc ::vfs::cvfs::vfsop_open {hashkey root relative actualpath mode permissions} {
   280    280   	if {$mode != "" && $mode != "r"} {
   281    281   		vfs::filesystem posixerror $::vfs::posix(EROFS)
   282    282   	}
   283    283   
   284    284   	catch {
   285         -		array set metadata [::vfs::kitdll::data::getMetadata $hashkey $relative]
          285  +		array set metadata [::vfs::cvfs::data::getMetadata $hashkey $relative]
   286    286   	}
   287    287   
   288    288   	if {![info exists metadata]} {
   289    289   		vfs::filesystem posixerror $::vfs::posix(ENOENT)
   290    290   	}
   291    291   
   292    292   	if {$metadata(type) == "directory"} {
   293    293   		vfs::filesystem posixerror $::vfs::posix(EISDIR)
   294    294   	}
   295    295   
   296    296   	if {[info command chan] != ""} {
   297         -		set chan [chan create [list "read"] [list ::vfs::kitdll::chanhandler $hashkey]]
          297  +		set chan [chan create [list "read"] [list ::vfs::cvfs::chanhandler $hashkey]]
   298    298   
   299         -		set ::vfs::kitdll::chandata([list $hashkey $chan]) [list file $relative pos 0 len $metadata(size) watching ""]
          299  +		set ::vfs::cvfs::chandata([list $hashkey $chan]) [list file $relative pos 0 len $metadata(size) watching ""]
   300    300   
   301    301   		return [list $chan]
   302    302   	}
   303    303   
   304    304   	if {[info command rechan] == ""} {
   305    305   		catch {
   306    306   			package require rechan
   307    307   		}
   308    308   	}
   309    309   
   310    310   	if {[info command rechan] != ""} {
   311         -		set chan [rechan [list ::vfs::kitdll::chanhandler $hashkey] 2]
          311  +		set chan [rechan [list ::vfs::cvfs::chanhandler $hashkey] 2]
   312    312   
   313         -		set ::vfs::kitdll::chandata([list $hashkey $chan]) [list file $relative pos 0 len $metadata(size) watching ""]
          313  +		set ::vfs::cvfs::chandata([list $hashkey $chan]) [list file $relative pos 0 len $metadata(size) watching ""]
   314    314   
   315    315   		return [list $chan]
   316    316   	}
   317    317   
   318    318   	return -code error "No way to generate a channel, need either Tcl 8.5+, \"rechan\""
   319    319   }
   320    320   
   321    321   ##### No-Ops since we are a readonly filesystem
   322         -proc ::vfs::kitdll::vfsop_createdirectory {args} {
          322  +proc ::vfs::cvfs::vfsop_createdirectory {args} {
          323  +	vfs::filesystem posixerror $::vfs::posix(EROFS)
          324  +}
          325  +proc ::vfs::cvfs::vfsop_deletefile {args} {
   323    326   	vfs::filesystem posixerror $::vfs::posix(EROFS)
   324    327   }
   325         -proc ::vfs::kitdll::vfsop_deletefile {args} {
          328  +proc ::vfs::cvfs::vfsop_removedirectory {args} {
   326    329   	vfs::filesystem posixerror $::vfs::posix(EROFS)
   327    330   }
   328         -proc ::vfs::kitdll::vfsop_removedirectory {args} {
   329         -	vfs::filesystem posixerror $::vfs::posix(EROFS)
   330         -}
   331         -proc ::vfs::kitdll::vfsop_utime {} {
          331  +proc ::vfs::cvfs::vfsop_utime {} {
   332    332   	vfs::filesystem posixerror $::vfs::posix(EROFS)
   333    333   }
   334    334   
   335         -package provide vfs::kitdll 1.0
          335  +package provide vfs::cvfs 1.0

Modified kitsh/buildsrc/kitsh-0.0/cvfs_data.c from [e51d57abbf] to [dcf0f1a5fd].

     1      1   #include <tcl.h>
     2      2   
     3      3   #ifdef HAVE_STDLIB_H
     4      4   #  include <stdlib.h>
     5      5   #endif
     6      6   
     7         -typedef struct kitdll_data *(cmd_getData_t)(const char *, unsigned long);
            7  +typedef struct cvfs_data *(cmd_getData_t)(const char *, unsigned long);
     8      8   typedef unsigned long (cmd_getChildren_t)(const char *, unsigned long *, unsigned long);
     9      9   
    10     10   /* Your implementation must provide these */
    11     11   static cmd_getData_t *getCmdData(const char *hashkey);
    12     12   static cmd_getChildren_t *getCmdChildren(const char *hashkey);
    13     13   
    14     14   /* Tcl Commands */
    15     15   static int getMetadata(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
    16     16   	cmd_getData_t *cmd_getData;
    17     17   	cmd_getChildren_t *cmd_getChildren;
    18         -	struct kitdll_data *finfo = NULL;
           18  +	struct cvfs_data *finfo = NULL;
    19     19   	Tcl_Obj *ret_list, *ret_list_items[20];
    20     20   	unsigned long num_children;
    21     21   	const char *hashkey;
    22     22   	const char *file;
    23     23   
    24     24   	if (objc != 3) {
    25     25   		Tcl_SetResult(interp, "wrong # args: should be \"getMetadata hashKey fileName\"", TCL_STATIC);
................................................................................
    48     48   	}
    49     49   
    50     50   	/* Values that can be derived from "finfo" */
    51     51   	ret_list_items[0] = Tcl_NewStringObj("type", 4);
    52     52   	ret_list_items[2] = Tcl_NewStringObj("mode", 4);
    53     53   	ret_list_items[4] = Tcl_NewStringObj("nlink", 5);
    54     54   
    55         -	if (finfo->type == KITDLL_FILETYPE_DIR) {
           55  +	if (finfo->type == CVFS_FILETYPE_DIR) {
    56     56   		num_children = cmd_getChildren(file, NULL, 0);
    57     57   
    58     58   		ret_list_items[1] = Tcl_NewStringObj("directory", 9);
    59     59   		ret_list_items[3] = Tcl_NewLongObj(040555);
    60     60   		ret_list_items[5] = Tcl_NewLongObj(num_children);
    61     61   	} else {
    62     62   		ret_list_items[1] = Tcl_NewStringObj("file", 4);
................................................................................
    90     90   
    91     91   	Tcl_SetObjResult(interp, ret_list);
    92     92   
    93     93   	return(TCL_OK);
    94     94   }
    95     95   
    96     96   static int getData(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
    97         -	struct kitdll_data *finfo = NULL;
           97  +	struct cvfs_data *finfo = NULL;
    98     98   	cmd_getData_t *cmd_getData;
    99     99   	const char *hashkey;
   100    100   	const char *file;
   101    101   	const char *end_str;
   102    102   	Tcl_Obj *ret_str;
   103    103   	long start = 0;
   104    104   	long end = -1;
................................................................................
   146    146   
   147    147   	if (finfo == NULL) {
   148    148   		Tcl_SetResult(interp, "No such file or directory", TCL_STATIC);
   149    149   
   150    150   		return(TCL_ERROR);
   151    151   	}
   152    152   
   153         -	if (finfo->type != KITDLL_FILETYPE_FILE) {
          153  +	if (finfo->type != CVFS_FILETYPE_FILE) {
   154    154   		Tcl_SetResult(interp, "Not a file", TCL_STATIC);
   155    155   
   156    156   		return(TCL_ERROR);
   157    157   	}
   158    158   
   159    159   	if (end == -1) {
   160    160   		end = finfo->size;
................................................................................
   182    182   
   183    183   	Tcl_SetObjResult(interp, ret_str);
   184    184   
   185    185   	return(TCL_OK);
   186    186   }
   187    187   
   188    188   static int getChildren(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
   189         -	struct kitdll_data *finfo = NULL;
          189  +	struct cvfs_data *finfo = NULL;
   190    190   	cmd_getChildren_t *cmd_getChildren;
   191    191   	cmd_getData_t *cmd_getData;
   192    192   	unsigned long num_children, idx;
   193    193   	unsigned long *children;
   194    194   	const char *hashkey;
   195    195   	const char *file;
   196    196   	const char *child;
................................................................................
   218    218   
   219    219   	if (finfo == NULL) {
   220    220   		Tcl_SetResult(interp, "No such file or directory", TCL_STATIC);
   221    221   
   222    222   		return(TCL_ERROR);
   223    223   	}
   224    224   
   225         -	if (finfo->type != KITDLL_FILETYPE_DIR) {
          225  +	if (finfo->type != CVFS_FILETYPE_DIR) {
   226    226   		Tcl_SetResult(interp, "Not a directory", TCL_STATIC);
   227    227   
   228    228   		return(TCL_ERROR);
   229    229   	}
   230    230   
   231    231   	num_children = cmd_getChildren(file, NULL, 0);
   232    232   

Modified kitsh/buildsrc/kitsh-0.0/dir2c.tcl from [28f9b94a91] to [903b20a63c].

     1      1   #! /usr/bin/env tclsh
     2      2   
     3      3   if {[llength $argv] != 2} {
     4         -	puts stderr "Usage: kitdll <hashkey> <startdir>"
            4  +	puts stderr "Usage: dir2c.tcl <hashkey> <startdir>"
     5      5   
     6      6   	exit 1
     7      7   }
     8      8   
     9      9   set hashkey [lindex $argv 0]
    10     10   set startdir [lindex $argv 1]
    11     11   
................................................................................
    72     72   
    73     73   	set ret "\"$ret\""
    74     74   
    75     75   	return $ret
    76     76   }
    77     77   
    78     78   # This function must be kept in-sync with the generated C function below
    79         -proc kitdll_hash {path} {
           79  +proc cvfs_hash {path} {
    80     80   	set h 0
    81     81   	set g 0
    82     82   
    83     83   	for {set idx 0} {$idx < [string length $path]} {incr idx} {
    84     84   		binary scan [string index $path $idx] H* char
    85     85   		set char "0x$char"
    86     86   
................................................................................
    99     99   # Generate list of files to include in output
   100    100   set files [recursive_glob $startdir]
   101    101   
   102    102   # Insert dummy entry cooresponding to C dummy entry
   103    103   set files [linsert $files 0 "__DUMMY__"]
   104    104   
   105    105   # Produce C89 compatible header
   106         -set cpp_tag "KITDLL_[string toupper $hashkey]"
   107         -set code_tag "kitdll_[string tolower $hashkey]"
          106  +set cpp_tag "CVFS_[string toupper $hashkey]"
          107  +set code_tag "cvfs_[string tolower $hashkey]"
   108    108   set hashkey [string tolower $hashkey]
   109    109   
   110    110   puts "#ifndef $cpp_tag"
   111    111   puts "#  define $cpp_tag 1"
   112    112   puts {
   113    113   #  ifdef HAVE_STDC
   114    114   #    ifndef HAVE_UNISTD_H
................................................................................
   121    121   #  ifdef HAVE_UNISTD_H
   122    122   #    include <unistd.h>
   123    123   #  endif
   124    124   #  ifdef HAVE_STRING_H
   125    125   #    include <string.h>
   126    126   #  endif
   127    127   
   128         -#  ifndef LOADED_KITDLL_COMMON
   129         -#    define LOADED_KITDLL_COMMON 1
          128  +#  ifndef LOADED_CVFS_COMMON
          129  +#    define LOADED_CVFS_COMMON 1
   130    130   
   131    131   typedef enum {
   132         -	KITDLL_FILETYPE_FILE,
   133         -	KITDLL_FILETYPE_DIR
   134         -} kitdll_filetype_t;
          132  +	CVFS_FILETYPE_FILE,
          133  +	CVFS_FILETYPE_DIR
          134  +} cvfs_filetype_t;
   135    135   
   136         -struct kitdll_data {
          136  +struct cvfs_data {
   137    137   	const char *             name;
   138    138   	unsigned long            index;
   139    139   	unsigned long            size;
   140         -	kitdll_filetype_t        type;
          140  +	cvfs_filetype_t          type;
   141    141   	const unsigned char *    data;
   142    142   };
   143    143   
   144         -static unsigned long kitdll_hash(const unsigned char *path) {
          144  +static unsigned long cvfs_hash(const unsigned char *path) {
   145    145   	unsigned long i, h = 0, g = 0;
   146    146   
   147    147   	for (i = 0; path[i]; i++) {
   148    148   		h = (h << 4) + path[i];
   149    149   		g = h & 0xf0000000;
   150    150   		if (g) {
   151    151   			h ^= (g >> 24);
................................................................................
   152    152   		}
   153    153   		h &= ((~g) & 0xffffffffLU);
   154    154   	}
   155    155           
   156    156           return(h);
   157    157   }
   158    158   
   159         -#  endif /* !LOADED_KITDLL_COMMON */}
          159  +#  endif /* !LOADED_CVFS_COMMON */}
   160    160   puts ""
   161    161   
   162         -puts "static struct kitdll_data ${code_tag}_data\[\] = {"
          162  +puts "static struct cvfs_data ${code_tag}_data\[\] = {"
   163    163   puts "\t{"
   164    164   puts "\t\t.name  = NULL,"
   165    165   puts "\t\t.index = 0,"
   166    166   puts "\t\t.type  = 0,"
   167    167   puts "\t\t.size  = 0,"
   168    168   puts "\t\t.data  = NULL,"
   169    169   puts "\t},"
................................................................................
   172    172   	set shortfile [shorten_file $startdir $file]
   173    173   
   174    174   	unset -nocomplain finfo type
   175    175   	file stat $file finfo
   176    176   
   177    177   	switch -- $finfo(type) {
   178    178   		"file" {
   179         -			set type "KITDLL_FILETYPE_FILE"
          179  +			set type "CVFS_FILETYPE_FILE"
   180    180   			set size $finfo(size)
   181    181   
   182    182   			set fd [open $file]
   183    183   			fconfigure $fd -translation binary
   184    184   			set data [read $fd]
   185    185   			close $fd
   186    186   
   187    187   			set data "(unsigned char *) [stringify $data]"
   188    188   		}
   189    189   		"directory" {
   190         -			set type "KITDLL_FILETYPE_DIR"
          190  +			set type "CVFS_FILETYPE_DIR"
   191    191   			set data "NULL"
   192    192   			set size 0
   193    193   		}
   194    194   	}
   195    195   
   196    196   	puts "\t{"
   197    197   	puts "\t\t.name  = \"$shortfile\","
................................................................................
   201    201   	puts "\t\t.data  = $data,"
   202    202   	puts "\t},"
   203    203   }
   204    204   puts "};"
   205    205   puts ""
   206    206   
   207    207   puts "static unsigned long ${code_tag}_lookup_index(const char *path) {"
   208         -puts "\tswitch (kitdll_hash((unsigned char *) path)) {"
          208  +puts "\tswitch (cvfs_hash((unsigned char *) path)) {"
   209    209   
   210    210   for {set idx 1} {$idx < [llength $files]} {incr idx} {
   211    211   	set file [lindex $files $idx]
   212    212   	set shortfile [shorten_file $startdir $file]
   213         -	set hash [kitdll_hash $shortfile]
          213  +	set hash [cvfs_hash $shortfile]
   214    214   
   215    215   	lappend indexes_per_hash($hash) [list $shortfile $idx]
   216    216   }
   217    217   
   218    218   foreach {hash idx_list} [array get indexes_per_hash] {
   219    219   	puts "\t\tcase $hash:"
   220    220   
................................................................................
   234    234   }
   235    235   
   236    236   puts "\t}"
   237    237   puts "\treturn(0);"
   238    238   puts "}"
   239    239   puts ""
   240    240   
   241         -puts "static struct kitdll_data *${code_tag}_getData(const char *path, unsigned long index) {"
          241  +puts "static struct cvfs_data *${code_tag}_getData(const char *path, unsigned long index) {"
   242    242   puts "\tif (path != NULL) {"
   243    243   puts "\t\tindex = ${code_tag}_lookup_index(path);"
   244    244   puts "\t}"
   245    245   puts ""
   246    246   puts "\tif (index == 0) {"
   247    247   puts "\t\treturn(NULL);"
   248    248   puts "\t}"
................................................................................
   262    262   puts "\tunsigned long num_children = 0;"
   263    263   puts ""
   264    264   puts "\tindex = ${code_tag}_lookup_index(path);"
   265    265   puts "\tif (index == 0) {"
   266    266   puts "\t\treturn(0);"
   267    267   puts "\t}"
   268    268   puts ""
   269         -puts "\tif (${code_tag}_data\[index\].type != KITDLL_FILETYPE_DIR) {"
          269  +puts "\tif (${code_tag}_data\[index\].type != CVFS_FILETYPE_DIR) {"
   270    270   puts "\t\treturn(0);"
   271    271   puts "\t}"
   272    272   puts ""
   273    273   puts "\tif (strcmp(path, ${code_tag}_data\[index\].name) != 0) {"
   274    274   puts "\t\treturn(0);"
   275    275   puts "\t}"
   276    276   puts ""
................................................................................
   347    347   
   348    348   puts "\t}"
   349    349   puts ""
   350    350   puts "\treturn(num_children);"
   351    351   puts "}"
   352    352   puts ""
   353    353   
   354         -puts "#  ifdef KITDLL_MAKE_LOADABLE"
          354  +puts "#  ifdef CVFS_MAKE_LOADABLE"
   355    355   
   356         -set fd [open "vfs_kitdll_data.c"]
          356  +set fd [open "cvfs_data.c"]
   357    357   puts [read $fd]
   358    358   close $fd
   359    359   
   360    360   
   361    361   puts "static cmd_getData_t *getCmdData(const char *hashkey) {"
   362    362   puts "\treturn(${code_tag}_getData);"
   363    363   puts "}"
   364    364   puts ""
   365    365   puts "static cmd_getChildren_t *getCmdChildren(const char *hashkey) {"
   366    366   puts "\treturn(${code_tag}_getChildren);"
   367    367   puts "}"
   368    368   puts ""
   369    369   
   370         -puts "int Vfs_kitdll_data_${hashkey}_Init(Tcl_Interp *interp) {"
          370  +puts "int Cvfs_data_${hashkey}_Init(Tcl_Interp *interp) {"
   371    371   puts "\tTcl_Command tclCreatComm_ret;"
   372    372   puts "\tint tclPkgProv_ret;"
   373    373   puts ""
   374         -puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::kitdll::data::${hashkey}::getMetadata\", getMetadata, NULL, NULL);"
          374  +puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::cvfs::data::${hashkey}::getMetadata\", getMetadata, NULL, NULL);"
          375  +puts "\tif (!tclCreatComm_ret) {"
          376  +puts "\t\treturn(TCL_ERROR);"
          377  +puts "\t}"
          378  +puts ""
          379  +puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::cvfs::data::${hashkey}::getData\", getData, NULL, NULL);"
   375    380   puts "\tif (!tclCreatComm_ret) {"
   376    381   puts "\t\treturn(TCL_ERROR);"
   377    382   puts "\t}"
   378    383   puts ""
   379         -puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::kitdll::data::${hashkey}::getData\", getData, NULL, NULL);"
          384  +puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::cvfs::data::${hashkey}::getChildren\", getChildren, NULL, NULL);"
   380    385   puts "\tif (!tclCreatComm_ret) {"
   381    386   puts "\t\treturn(TCL_ERROR);"
   382    387   puts "\t}"
   383    388   puts ""
   384         -puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::kitdll::data::${hashkey}::getChildren\", getChildren, NULL, NULL);"
   385         -puts "\tif (!tclCreatComm_ret) {"
   386         -puts "\t\treturn(TCL_ERROR);"
   387         -puts "\t}"
   388         -puts ""
   389         -puts "\ttclPkgProv_ret = Tcl_PkgProvide(interp, \"vfs::kitdll::data::${hashkey}\", \"1.0\");"
          389  +puts "\ttclPkgProv_ret = Tcl_PkgProvide(interp, \"vfs::cvfs::data::${hashkey}\", \"1.0\");"
   390    390   puts ""
   391    391   puts "\treturn(tclPkgProv_ret);"
   392    392   puts "\t}"
   393         -puts "#  endif /* KITDLL_MAKE_LOADABLE */"
          393  +puts "#  endif /* CVFS_MAKE_LOADABLE */"
   394    394   
   395    395   puts "#endif /* !$cpp_tag */"

Modified kitsh/buildsrc/kitsh-0.0/installvfs.tcl from [01a4e2e7f2] to [b17724e7c3].

    11     11   set kitfile [lindex $argv 0]
    12     12   set vfsdir [lindex $argv 1]
    13     13   if {[lindex $argv 2] != ""} {
    14     14   	set opt_compression [lindex $argv 2]
    15     15   }
    16     16   
    17     17   # Determine what storage mechanism is being used
    18         -## This logic must be duplicated from "kitInit.c"
    19         -set fd [open Makefile r]
           18  +set fd [open Makefile.common r]
    20     19   set data [read $fd]
    21     20   close $fd
    22     21   
    23     22   if {[string match "*KIT_STORAGE_ZIP*" $data]} {
    24     23   	set tclKitStorage zip
    25     24   }
    26     25   if {[string match "*KIT_STORAGE_MK4*" $data]} {
    27     26   	set tclKitStorage mk4
    28     27   }
    29         -
    30         -if {![info exists tclKitStorage]} {
    31         -	if {[string match "*KIT_INCLUDES_MK4TCL*" $data]} {
    32         -		set tclKitStorage mk4
    33         -	} else {
    34         -		set tclKitStorage zip
    35         -	}
           28  +if {[string match "*KIT_STORAGE_CVFS*" $data]} {
           29  +	set tclKitStorage cvfs
    36     30   }
    37     31   
    38     32   # Define procedures
    39     33   proc copy_file {srcfile destfile} {
    40     34   	switch -glob -- $srcfile {
    41     35   		"*.tcl" - "*.txt" {
    42     36   			set ifd [open $srcfile r]
................................................................................
   113    107   		if {[catch {
   114    108   			close $zipfd
   115    109   		} err]} {
   116    110   			puts stderr "Error while updating executable: $err"
   117    111   
   118    112   			exit 1
   119    113   		}
          114  +	}
          115  +	"cvfs" {
          116  +		# No-op
   120    117   	}
   121    118   }

Modified kitsh/buildsrc/kitsh-0.0/kitInit.c from [2ea4599da9] to [901380bcbe].

    13     13    * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
    14     14    *
    15     15    * RCS: @(#) $Id$
    16     16    */
    17     17   
    18     18   #ifdef KIT_INCLUDES_TK
    19     19   #  include <tk.h>
    20         -#else
    21         -#  include <tcl.h>
    22     20   #endif /* KIT_INCLUDES_TK */
           21  +#include <tcl.h>
    23     22   
    24     23   #ifdef _WIN32
    25     24   #  define WIN32_LEAN_AND_MEAN
    26     25   #  include <windows.h>
    27     26   #  undef WIN32_LEAN_AND_MEAN
    28     27   #endif /* _WIN32 */
    29     28   
................................................................................
    71     70   Tcl_AppInitProc Vfs_Init, Rechan_Init;
    72     71   #ifdef KIT_INCLUDES_PWB
    73     72   Tcl_AppInitProc	Pwb_Init;
    74     73   #endif
    75     74   #ifdef KIT_INCLUDES_ZLIB
    76     75   Tcl_AppInitProc Zlib_Init;
    77     76   #endif
           77  +#ifdef KIT_STORAGE_CVFS
           78  +Tcl_AppInitProc Cvfs_data_tcl_Init;
           79  +#endif
    78     80   #ifdef TCL_THREADS
    79     81   Tcl_AppInitProc	Thread_Init;
    80     82   #endif
    81     83   #ifdef _WIN32
    82     84   Tcl_AppInitProc	Dde_Init, Registry_Init;
    83     85   #endif
    84     86   
    85         -/* Determine which type of storage to use -- MK4 or ZIP */
    86         -#if defined(KIT_STORAGE_MK4) && defined(KIT_STORAGE_ZIP)
    87         -#  undef KIT_STORAGE_ZIP
    88         -#endif
    89         -#if !defined(KIT_STORAGE_MK4) && !defined(KIT_STORAGE_ZIP)
    90         -#  ifdef KIT_INCLUDES_MK4TCL
    91         -#    define KIT_STORAGE_MK4 1
    92         -#  else
    93         -#    define KIT_STORAGE_ZIP 1
    94         -#  endif
    95         -#endif
           87  +#ifdef TCLKIT_DLL
           88  +#  define TCLKIT_MOUNTPOINT "/.KITDLL_TCL"
           89  +#  define TCLKIT_VFSSOURCE "$::tclKitFilename"
           90  +#else
           91  +#  define TCLKIT_MOUNTPOINT "[info nameofexecutable]"
           92  +#  define TCLKIT_VFSSOURCE "[info nameofexecutable]"
           93  +#endif /* TCLKIT_DLL */
           94  +
           95  +#ifdef HAVE_ACCEPTABLE_DLADDR
           96  +#  ifdef KITSH_NEED_WINMAIN
           97  +#    ifdef _WIN32_WCE
           98  +int wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow);
           99  +#    else
          100  +int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow);
          101  +#    endif /* _WIN32_WCE */
          102  +#  endif /* KITSH_NEED_WINMAIN */
          103  +int main(int argc, char **argv);
          104  +#endif /* HAVE_ACCEPTABLE_DLADDR */
    96    105   
    97    106   #ifdef TCLKIT_REQUIRE_TCLEXECUTABLENAME
    98    107   char *tclExecutableName;
    99    108   #endif
   100    109   
   101         -    /*
   102         -     *  Attempt to load a "boot.tcl" entry from the embedded MetaKit file.
   103         -     *  If there isn't one, try to open a regular "setup.tcl" file instead.
   104         -     *  If that fails, this code will throw an error, using a message box.
   105         -     */
   106         -
          110  +/*
          111  + *  Attempt to load a "boot.tcl" entry from the embedded MetaKit file.
          112  + *  If there isn't one, try to open a regular "setup.tcl" file instead.
          113  + *  If that fails, this code will throw an error, using a message box.
          114  + */
          115  +/*
          116  + * This Tcl code is invoked whenever Tcl_Init() is called on an
          117  + * interpreter.  It should mount up the VFS and make everything ready for
          118  + * that interpreter to do its job.
          119  + */
   107    120   static char *preInitCmd = 
   108         -#ifdef _WIN32_WCE
          121  +#if defined(_WIN32_WCE) && !defined(TCLKIT_DLL)
   109    122   /* silly hack to get wince port to launch, some sort of std{in,out,err} problem */
   110    123   "open /kitout.txt a; open /kitout.txt a; open /kitout.txt a\n"
   111    124   /* this too seems to be needed on wince - it appears to be related to the above */
   112    125   "catch {rename source ::tcl::source}\n"
   113    126   "proc source file {\n"
   114    127   	"set old [info script]\n"
   115    128   	"info script $file\n"
................................................................................
   117    130   	"set data [read $fid]\n"
   118    131   	"close $fid\n"
   119    132   	"set code [catch {uplevel 1 $data} res]\n"
   120    133   	"info script $old\n"
   121    134   	"if {$code == 2} { set code 0 }\n"
   122    135   	"return -code $code $res\n"
   123    136   "}\n"
   124         -#endif /* _WIN32_WCE */
          137  +#endif /* _WIN32_WCE && !TCLKIT_DLL */
   125    138   "proc tclKitInit {} {\n"
   126    139   	"rename tclKitInit {}\n"
          140  +#ifdef KIT_INCLUDES_ZLIB
          141  +	"catch { load {} zlib }\n"
          142  +#endif
   127    143   #ifdef KIT_INCLUDES_MK4TCL
   128    144   	"catch { load {} Mk4tcl }\n"
   129    145   #endif
          146  +#ifdef TCLKIT_DLL
          147  +	"load {} tclkit::init\n"
          148  +	"::tclkit::init::initInterp\n"
          149  +	"rename ::tclkit::init::initInterp {}\n"
          150  +#endif /* TCLKIT_DLL */
          151  +	"set bootfile [file join " TCLKIT_MOUNTPOINT " boot.tcl]\n"
          152  +	"if {[file exists $bootfile]} {\n"
          153  +		"catch {\n"
          154  +			"set f [open $bootfile]\n"
          155  +			"set s [read $f]\n"
          156  +			"close $f\n"
          157  +		"}\n"
          158  +	"}\n"
   130    159   #ifdef KIT_STORAGE_MK4
   131    160   	"set ::tclKitStorage \"mk4\"\n"
   132         -	"mk::file open exe [info nameofexecutable] -readonly\n"
   133         -	"set n [mk::select exe.dirs!0.files name boot.tcl]\n"
   134         -	"if {$n != \"\"} {\n"
   135         -		"set s [mk::get exe.dirs!0.files!$n contents]\n"
   136         -		"if {![string length $s]} { error \"empty boot.tcl\" }\n"
   137         -		"catch {load {} zlib}\n"
   138         -		"if {[mk::get exe.dirs!0.files!$n size] != [string length $s]} {\n"
   139         -			"set s [zlib decompress $s]\n"
          161  +	"if {![info exists s]} {\n"
          162  +		"mk::file open exe " TCLKIT_VFSSOURCE " -readonly\n"
          163  +		"set n [mk::select exe.dirs!0.files name boot.tcl]\n"
          164  +		"if {$n != \"\"} {\n"
          165  +			"set s [mk::get exe.dirs!0.files!$n contents]\n"
          166  +			"if {![string length $s]} { error \"empty boot.tcl\" }\n"
          167  +			"catch {load {} zlib}\n"
          168  +			"if {[mk::get exe.dirs!0.files!$n size] != [string length $s]} {\n"
          169  +				"set s [zlib decompress $s]\n"
          170  +			"}\n"
   140    171   		"}\n"
   141    172   	"}\n"
   142    173   #endif /* KIT_STORAGE_MK4 */
   143    174   #ifdef KIT_STORAGE_ZIP
   144    175   	"set ::tclKitStorage \"zip\"\n"
   145    176   	"catch { load {} vfs }\n"
   146         -	"if {![info exists s]} {\n"
   147         -		"catch {\n"
   148         -			"set bootfile [file join [info nameofexecutable] boot.tcl]\n"
   149         -			"if {[file exists $bootfile]} {\n"
   150         -				"set f [open $bootfile]\n"
   151         -				"set s [read $f]\n"
   152         -				"close $f\n"
   153         -			"}\n"
   154         -		"}\n"
   155         -	"}\n"
   156    177   	"if {![info exists s]} {\n"
   157    178   #  include "zipvfs.tcl.h"
   158    179   		"catch {\n"
   159         -			"set ::tclKitStorage_fd [::zip::open [info nameofexecutable]]\n"
          180  +			"set ::tclKitStorage_fd [::zip::open " TCLKIT_VFSSOURCE "]\n"
   160    181   			"::zip::stat $::tclKitStorage_fd boot.tcl sb\n"
   161    182   			"seek $::tclKitStorage_fd $sb(ino)\n"
   162         -			"zip::Data $::tclKitStorage_fd sb s\n"
          183  +			"::zip::Data $::tclKitStorage_fd sb s\n"
   163    184   		"}\n"
   164    185   	"}\n"
   165    186   #endif /* KIT_STORAGE_ZIP */
          187  +#ifdef KIT_STORAGE_CVFS
          188  +	"set ::tclKitStorage \"cvfs\"\n"
          189  +	"load {} rechan\n"
          190  +	"load {} vfs\n"
          191  +	"load {} cvfs_data_tcl\n"
          192  +#include "cvfs.tcl.h"
          193  +	"if {![info exists s]} {\n"
          194  +		"catch {\n"
          195  +			"set s [::vfs::cvfs::data::getData tcl boot.tcl]\n"
          196  +		"}\n"
          197  +	"}\n"
          198  +#endif /* KIT_STORAGE_CVFS */
          199  +#ifndef TCLKIT_DLL
   166    200   	"if {![info exists s]} {\n"
   167    201   		"set f [open setup.tcl]\n"
   168    202   		"set s [read $f]\n"
   169    203   		"close $f\n"
   170    204   	"}\n"
          205  +#endif /* !TCLKIT_DLL */
          206  +#ifdef TCLKIT_DLL
          207  +	"set ::TCLKIT_TYPE \"kitdll\"\n"
          208  +#else
          209  +	"set ::TCLKIT_TYPE \"tclkit\"\n"
          210  +#endif /* TCLKIT_DLL */
          211  +	"set ::TCLKIT_MOUNTPOINT " TCLKIT_MOUNTPOINT "\n"
          212  +	"set ::TCLKIT_VFSSOURCE " TCLKIT_VFSSOURCE "\n"
          213  +	"set ::TCLKIT_MOUNTPOINT_VAR {" TCLKIT_MOUNTPOINT "}\n"
          214  +	"set ::TCLKIT_VFSSOURCE_VAR {" TCLKIT_VFSSOURCE "}\n"
   171    215   	"uplevel #0 $s\n"
   172    216   #if defined(KIT_INCLUDES_TK) && defined(KIT_TK_VERSION)
   173    217   	"package ifneeded Tk " KIT_TK_VERSION " {\n"
   174    218   		"load {} Tk\n"
   175    219   	"}\n"
   176    220   #endif
   177    221   #ifdef _WIN32
................................................................................
   242    286   				return;
   243    287   			}
   244    288   		}
   245    289   	}
   246    290   #endif /* HAVE_READLINK */
   247    291   
   248    292   #ifdef HAVE_ACCEPTABLE_DLADDR
          293  +#  ifndef TCLKIT_DLL
   249    294   	if (Tcl_GetNameOfExecutable() == NULL) {
   250    295   		dladdr_ret = dladdr(&SetExecName, &syminfo);
   251    296   		if (dladdr_ret != 0) {
   252    297   			SetExecName(interp, syminfo.dli_fname);
          298  +
          299  +			return;
          300  +		}
          301  +	}
          302  +#  endif /* !TCLKIT_DLL */
          303  +
          304  +#  ifdef KITSH_NEED_WINMAIN
          305  +	if (Tcl_GetNameOfExecutable() == NULL) {
          306  +#    ifdef _WIN32_WCE
          307  +		dladdr_ret = dladdr(&WinMain, &syminfo);
          308  +#    else
          309  +		dladdr_ret = dladdr(&wWinMain, &syminfo);
          310  +#    endif /* _WIN32_WCE */
          311  +
          312  +		if (dladdr_ret != 0) {
          313  +			SetExecName(interp, syminfo.dli_fname);
          314  +
          315  +			return;
          316  +		}
          317  +	}
          318  +#  endif /* KITSH_NEED_WINMAIN */
          319  +
          320  +	if (Tcl_GetNameOfExecutable() == NULL) {
          321  +		dladdr_ret = dladdr(&main, &syminfo);
          322  +		if (dladdr_ret != 0) {
          323  +			SetExecName(interp, syminfo.dli_fname);
          324  +
          325  +			return;
   253    326   		}
   254    327   	}
   255    328   #endif /* HAVE_ACCEPTABLE_DLADDR */
   256    329   
   257    330   	if (Tcl_GetNameOfExecutable() == NULL) {
   258    331   		lobjv[0] = Tcl_GetVar2Ex(interp, "argv0", NULL, TCL_GLOBAL_ONLY);
   259    332   		execNameObj = Tcl_FSJoinToPath(Tcl_FSGetCwd(interp), 1, lobjv);
................................................................................
   262    335   
   263    336   		return;
   264    337   	}
   265    338   
   266    339   	return;
   267    340   }
   268    341   
   269         -int TclKit_AppInit(Tcl_Interp *interp) {
   270         -#ifdef KIT_INCLUDES_TK
   271         -#  ifdef _WIN32
   272         -#    ifndef _WIN32_WCE
   273         -	char msgBuf[2049];
   274         -#    endif /* !_WIN32_WCE */
   275         -#  endif /* _WIN32 */
   276         -#endif /* KIT_INCLUDES_TK */
   277         -#ifdef TCLKIT_CAN_SET_ENCODING
   278         -	Tcl_DString encodingName;
   279         -#endif /* TCLKIT_CAN_SET_ENCODING */
   280         -
          342  +static void _Tclkit_Generic_Init(void) {
   281    343   #ifdef KIT_INCLUDES_ITCL
   282    344   	Tcl_StaticPackage(0, "Itcl", Itcl_Init, NULL);
   283    345   #endif 
   284    346   #ifdef KIT_INCLUDES_MK4TCL
   285    347   	Tcl_StaticPackage(0, "Mk4tcl", Mk4tcl_Init, NULL);
   286    348   #endif
   287    349   #ifdef KIT_INCLUDES_PWB
................................................................................
   288    350   	Tcl_StaticPackage(0, "pwb", Pwb_Init, NULL);
   289    351   #endif 
   290    352   	Tcl_StaticPackage(0, "rechan", Rechan_Init, NULL);
   291    353   	Tcl_StaticPackage(0, "vfs", Vfs_Init, NULL);
   292    354   #ifdef KIT_INCLUDES_ZLIB
   293    355   	Tcl_StaticPackage(0, "zlib", Zlib_Init, NULL);
   294    356   #endif
          357  +#ifdef KIT_STORAGE_CVFS
          358  +	Tcl_StaticPackage(0, "cvfs_data_tcl", Cvfs_data_tcl_Init, NULL);
          359  +#endif
   295    360   #ifdef TCL_THREADS
   296    361   	Tcl_StaticPackage(0, "Thread", Thread_Init, NULL);
   297    362   #endif
   298    363   #ifdef _WIN32
   299    364   	Tcl_StaticPackage(0, "dde", Dde_Init, NULL);
   300    365   	Tcl_StaticPackage(0, "registry", Registry_Init, NULL);
   301    366   #endif
   302    367   #ifdef KIT_INCLUDES_TK
   303    368   	Tcl_StaticPackage(0, "Tk", Tk_Init, Tk_SafeInit);
   304    369   #endif
   305    370   
          371  +	TclSetPreInitScript(preInitCmd);
          372  +
          373  +	return;
          374  +}
          375  +
          376  +static void _Tclkit_Interp_Init(Tcl_Interp *interp) {
          377  +#ifdef TCLKIT_CAN_SET_ENCODING
          378  +	Tcl_DString encodingName;
          379  +#endif /* TCLKIT_CAN_SET_ENCODING */
          380  +
          381  +#ifndef TCLKIT_DLL
   306    382   	/* the tcl_rcFileName variable only exists in the initial interpreter */
   307         -#ifdef _WIN32
          383  +#  ifdef _WIN32
   308    384   	Tcl_SetVar(interp, "tcl_rcFileName", "~/tclkitrc.tcl", TCL_GLOBAL_ONLY);
   309         -#else
          385  +#  else
   310    386   	Tcl_SetVar(interp, "tcl_rcFileName", "~/.tclkitrc", TCL_GLOBAL_ONLY);
   311         -#endif
          387  +#  endif /* _WIN32 */
          388  +#endif /* !TCLKIT_DLL */
          389  +	Tcl_SetVar(interp, "TCLKIT_INITVFS", "1", TCL_GLOBAL_ONLY);
   312    390   
   313    391   #ifdef TCLKIT_CAN_SET_ENCODING
   314    392   	/* Set the encoding from the Environment */
   315    393   	Tcl_GetEncodingNameFromEnvironment(&encodingName);
   316    394   	Tcl_SetSystemEncoding(NULL, Tcl_DStringValue(&encodingName));
   317    395   	Tcl_SetVar(interp, "tclkit_system_encoding", Tcl_DStringValue(&encodingName), 0);
   318    396   	Tcl_DStringFree(&encodingName);
   319         -#endif
          397  +#endif /* TCLKIT_CAN_SET_ENCODING */
   320    398   
   321    399   	/* Hack to get around Tcl bug 1224888.  This must be run here and
   322    400   	 * in LibraryPathObjCmd because this information is needed both
   323    401   	 * before and after that command is run. */
   324    402   	FindAndSetExecName(interp);
   325    403   
   326         -	TclSetPreInitScript(preInitCmd);
          404  +	return;
          405  +}
          406  +
          407  +#ifndef TCLKIT_DLL
          408  +int TclKit_AppInit(Tcl_Interp *interp) {
          409  +#ifdef KIT_INCLUDES_TK
          410  +#  ifdef _WIN32
          411  +#    ifndef _WIN32_WCE
          412  +	char msgBuf[2049];
          413  +#    endif /* !_WIN32_WCE */
          414  +#  endif /* _WIN32 */
          415  +#endif /* KIT_INCLUDES_TK */
          416  +
          417  +	/* Perform common initialization */
          418  +	_Tclkit_Generic_Init();
          419  +
          420  +	_Tclkit_Interp_Init(interp);
          421  +
   327    422   	if (Tcl_Init(interp) == TCL_ERROR) {
   328    423   		goto error;
   329    424   	}
   330    425   
   331    426   #ifdef KIT_INCLUDES_TK
   332    427   #  ifdef _WIN32
   333    428   	if (Tk_Init(interp) == TCL_ERROR) {
................................................................................
   376    471   #    endif /* !_WIN32_WCE */
   377    472       /* we won't reach this, but we need the return */
   378    473   #  endif /* _WIN32 */
   379    474   #endif /* KIT_INCLUDES_TK */
   380    475   
   381    476   	return TCL_ERROR;
   382    477   }
          478  +#endif /* !TCLKIT_DLL */
          479  +
          480  +
          481  +#ifdef TCLKIT_DLL
          482  +#  ifdef HAVE_ACCEPTABLE_DLADDR
          483  +/* Symbol to resolve against dladdr() */
          484  +static void _tclkit_dummy_func(void) {
          485  +	return;
          486  +}
          487  +#  endif /* HAVE_ACCEPTABLE_DLADDR */
          488  +
          489  +/*
          490  + * This function will return a pathname we can open() to treat as a VFS,
          491  + * hopefully
          492  + */
          493  +static char *find_tclkit_dll_path(void) {
          494  +#ifdef HAVE_ACCEPTABLE_DLADDR
          495  +	Dl_info syminfo;
          496  +	int dladdr_ret;
          497  +#endif /* HAVE_ACCEPTABLE_DLADDR */
          498  +#ifdef _WIN32
          499  +	TCHAR modulename[8192];
          500  +	DWORD gmfn_ret;
          501  +#endif /* _WIN32 */
          502  +
          503  +#ifdef HAVE_ACCEPTABLE_DLADDR
          504  +	dladdr_ret = dladdr(&_tclkit_dummy_func, &syminfo);
          505  +	if (dladdr_ret != 0) {
          506  +		if (syminfo.dli_fname && syminfo.dli_fname[0] != '\0') {
          507  +			return(strdup(syminfo.dli_fname));
          508  +		}
          509  +	}
          510  +#endif /* HAVE_ACCEPTABLE_DLADDR */
          511  +
          512  +#ifdef _WIN32
          513  +	gmfn_ret = GetModuleFileName(TclWinGetTclInstance(), modulename, sizeof(modulename) / sizeof(modulename[0]) - 1);
          514  +
          515  +	if (gmfn_ret != 0) {
          516  +		return(strdup(modulename));
          517  +	}
          518  +#endif /* _WIN32 */
          519  +
          520  +	return(NULL);
          521  +}
          522  +
          523  +/*
          524  + * This function exists to allow C code to initialize a particular
          525  + * interpreter.
          526  + */
          527  +static int tclkit_init_initinterp(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
          528  +	char *kitdll_path;
          529  +
          530  +	kitdll_path = find_tclkit_dll_path();
          531  +	if (kitdll_path != NULL) {
          532  +		Tcl_SetVar(interp, "tclKitFilename", kitdll_path, TCL_GLOBAL_ONLY);
          533  +
          534  +		free(kitdll_path);
          535  +	}
          536  +
          537  +	_Tclkit_Interp_Init(interp);
          538  +
          539  +	return(TCL_OK);
          540  +}
          541  +
          542  +/*
          543  + * Create a package for initializing a particular interpreter.  This is
          544  + * our hook to have Tcl invoke C commands when creating an interpreter.
          545  + * The preInitCmd will load the package in the new interpreter and invoke
          546  + * this function.
          547  + */
          548  +int Tclkit_init_Init(Tcl_Interp *interp) {
          549  +	Tcl_Command tclCreatComm_ret;
          550  +	int tclPkgProv_ret;
          551  +
          552  +	tclCreatComm_ret = Tcl_CreateObjCommand(interp, "::tclkit::init::initInterp", tclkit_init_initinterp, NULL, NULL);
          553  +	if (!tclCreatComm_ret) {
          554  +		return(TCL_ERROR);
          555  +	}
          556  +
          557  +	tclPkgProv_ret = Tcl_PkgProvide(interp, "tclkit::init", "1.0");
          558  +
          559  +	return(tclPkgProv_ret);
          560  +}
          561  +
          562  +/*
          563  + * Initialize the Tcl system when we are loaded, that way Tcl functions
          564  + * are ready to be used when invoked.
          565  + */
          566  +void __attribute__((constructor)) _Tclkit_Init(void) {
          567  +	Tcl_StaticPackage(0, "tclkit::init", Tclkit_init_Init, NULL);
          568  +
          569  +	_Tclkit_Generic_Init();
          570  +
          571  +	return;
          572  +}
          573  +#endif

Name change from kitdll/buildsrc/kitdll-0.0/tclsh.c to kitsh/buildsrc/kitsh-0.0/tclsh.c.


Name change from kitdll/buildsrc/kitdll-0.0/wish.c to kitsh/buildsrc/kitsh-0.0/wish.c.