Index: .fossil-settings/ignore-glob ================================================================== --- .fossil-settings/ignore-glob +++ .fossil-settings/ignore-glob @@ -144,6 +144,6 @@ kitdll/buildsrc/kitdll-0.0/vfs_kitdll_data_tcl.c kitdll/buildsrc/kitdll-0.0/vfs_kitdll.tcl.h kitdll/build/kitdll-* kitdll/build/kitdll-*/* kitdll/build.log -libtclkit-*.* +libtclkit*.* Index: README ================================================================== --- README +++ README @@ -143,10 +143,21 @@ 10. KC_TCL_STATICPKGS Set this variable to the value "1" to attempt to force the packages included in the "pkgs" directory of Tcl 8.6+ to be compiled statically + + 11. KITCREATOR_STATIC_KITDLL + Set this variable to the value "1" to build a static KitDLL. + This only has an affect when KITCREATOR_PKGS specifies that + "kitdll" is to be built (e.g., KITCREATOR_PKGS='kitdll') + + 12. KITCREATOR_ITCL3_FORCE + Set this variable to the value "1" to build [incr Tcl] version + 3.x even with Tcl 8.6+. Note that [incr Tcl] 4.x will still + be built as part of Tcl 8.6+ (unless excluded using + KITCREATOR_MINBUILD). Cross compiling Environment Variables: 1. CC Index: build/make-kit-macosx-amd64 ================================================================== --- build/make-kit-macosx-amd64 +++ build/make-kit-macosx-amd64 @@ -2,6 +2,6 @@ CC='gcc -arch x86_64' CXX='g++ -arch x86_64' export CC CXX -./build/make-kit-powermacg5 "$@" --enable-aqua --host=x86_64-apple-darwin9 +./build/make-kit-remote buildb.wu.ac.at "$@" --enable-aqua --host=x86_64-apple-darwin9 Index: build/make-kit-macosx-i386 ================================================================== --- build/make-kit-macosx-i386 +++ build/make-kit-macosx-i386 @@ -2,6 +2,6 @@ CC='gcc -arch i386' CXX='g++ -arch i386' export CC CXX -./build/make-kit-powermacg5 "$@" --enable-aqua --host=i386-apple-darwin9 +./build/make-kit-remote buildb.wu.ac.at "$@" --enable-aqua --host=i386-apple-darwin9 Index: build/make-kit-macosx-ppc ================================================================== --- build/make-kit-macosx-ppc +++ build/make-kit-macosx-ppc @@ -1,3 +1,3 @@ #! /bin/sh -./build/make-kit-powermacg5 "$@" --enable-aqua +./build/make-kit-remote powermacg5.vpn.oc9.org "$@" --enable-aqua Index: build/make-kit-macosx-ppc64 ================================================================== --- build/make-kit-macosx-ppc64 +++ build/make-kit-macosx-ppc64 @@ -2,6 +2,6 @@ CC='gcc -arch ppc64' CXX='g++ -arch ppc64' export CC CXX -./build/make-kit-powermacg5 "$@" --enable-aqua +./build/make-kit-remote powermacg5.vpn.oc9.org "$@" --enable-aqua DELETED build/make-kit-powermacg5 Index: build/make-kit-powermacg5 ================================================================== --- build/make-kit-powermacg5 +++ /dev/null @@ -1,39 +0,0 @@ -#! /bin/bash - -if [ "$(uname -s)" != 'Darwin' ]; then - buildid="$(( hostname; id -u; pwd ) | openssl sha1 | sed 's@^.*= *@@')" - workdir="/tmp/work-kitcreator-${buildid}" - - rsync -aq --delete -e ssh . powermacg5.vpn.oc9.org:${workdir}/ || exit 1 - - ( - newArgv=("$@"); declare -p newArgv - declare -p workdir - export - cat << \_EOF_ -cd "${workdir}" || exit 1 -export PATH="${PATH}:/usr/local/bin:/usr/bin" -./kitcreator "${newArgv[@]}" -exit "$?" -_EOF_ - ) | ssh powermacg5.vpn.oc9.org bash -s - retval="$?" - - rm -f */build.log - ssh powermacg5.vpn.oc9.org "workdir='${workdir}'; "'cd "${workdir}" && tar -cf - tclkit-* libtclkit* */build.log 2>/dev/null' | tar -xf - - - # Clean-up if appropriate - case "$(pwd)" in - /home/rkeene/*) - ;; - *) - ssh powermacg5.vpn.oc9.org "workdir='${workdir}'; "'rm -rf "${workdir}"' - ;; - esac - - exit "${retval}" -else - exec ./kitcreator "$@" -fi - -exit 1 ADDED build/make-kit-remote Index: build/make-kit-remote ================================================================== --- /dev/null +++ build/make-kit-remote @@ -0,0 +1,54 @@ +#! /bin/bash + +TARGET="$1" +shift + +buildid="$(( hostname; id -u; pwd ) | openssl sha1 | sed 's@^.*= *@@')" +workdir="/tmp/work-kitcreator-${buildid}" + +hostUp='0' +for try in {1..3}; do + checkOk="$(timeout 300 ssh -q "${TARGET}" 'echo ok' 2>/dev/null)" + + if [ "${checkOk}" = 'ok' ]; then + hostUp='1' + break + fi + + sleep 10 +done + +if [ "${hostUp}" != '1' ]; then + echo "Unable to establish a link to the remote system." >&2 + + exit 1 +fi + +rsync -aq --delete -e ssh . "${TARGET}:${workdir}/" || exit 1 + +( + newArgv=("$@"); declare -p newArgv + declare -p workdir + export + cat << \_EOF_ +cd "${workdir}" || exit 1 +export PATH="${PATH}:/usr/local/bin:/usr/bin" +./kitcreator "${newArgv[@]}" +exit "$?" +_EOF_ +) | ssh "${TARGET}" bash -s +retval="$?" + +rm -f */build.log +ssh "${TARGET}" "workdir='${workdir}'; "'cd "${workdir}" && tar -cf - tclkit-* libtclkit* */build.log 2>/dev/null' | tar -xf - + +# Clean-up if appropriate +case "$(pwd)" in + /home/rkeene/*) + ;; + *) + ssh "${TARGET}" "workdir='${workdir}'; "'rm -rf "${workdir}"' + ;; +esac + +exit "${retval}" Index: build/makearch.info ================================================================== --- build/makearch.info +++ build/makearch.info @@ -14,11 +14,11 @@ # each time a "makearch" is done. # # If @@SVNLCR@@ is used anywhere in this version number, it will be # replaced with the highest last-changed-rev from the output of # svn info -R (or 0) -VERS="0.9.2" +VERS="0.9.5" # Space sperated list of documents, if they exist, they will be # prefixed with the contents of the DOC_HDR file and substitution # will occur: # @@UTIL@@ becomes the utility name ${UTIL} Index: build/test/test ================================================================== --- build/test/test +++ build/test/test @@ -1,8 +1,8 @@ #! /bin/bash -VERSIONS="8.5.18 8.6.4 fossil_trunk" +VERSIONS="8.5.19 8.6.5 fossil_trunk" # Find the base directory for x in 1 2 3 4 __fail__; do if [ "${x}" = "__fail__" ]; then echo 'Unable to find KitCreator, aborting.' >&2 ADDED build/utils/download-tclkit.tcl Index: build/utils/download-tclkit.tcl ================================================================== --- /dev/null +++ build/utils/download-tclkit.tcl @@ -0,0 +1,64 @@ +#!/usr/bin/env tclsh +# Tclkit Downloader v0.2.2 -- download Tclkits created with the KitCreator +# Web Interface. Works with Tcl 8.5+ and Jim Tcl v0.75+. This script requires +# that cURL be available through [exec curl]. +# Copyright (C) 2016, dbohdan. +# License: MIT. +proc download url { + if {![string match */buildinfo $url]} { + # Guess at what the buildinfo URL might be if we are given, e.g., a + # building page URL. + set url [string map {/building {}} $url] + set checksum {} + foreach piece [split $url /] { + if {[regexp {^[a-z0-9]{40}$} $piece checksum]} { + break + } + } + if {$checksum eq {}} { + error "can't determine how to get the from the URL \"$url\" to the\ + buildinfo" + } + set url [regexp -inline "^.*$checksum" $url]/buildinfo + } + + set buildInfo [exec curl -s $url] + + set filename [dict get $buildInfo filename] + append filename -[dict get $buildInfo tcl_version] + append filename -[dict get $buildInfo platform] + + if {[llength [dict get $buildInfo packages]] > 0} { + foreach option {staticpkgs threaded debug} { + if {[dict exists $buildInfo options $option] && + [dict get $buildInfo options $option]} { + append filename -$option + } + } + append filename -[join [dict get $buildInfo packages] -] + } + + set tail [file tail $url] + # We can't use [file dirname] here because it will transform + # "http://example.com/" into "http:/example.com/". + set baseUrl [string range $url 0 end-[string length $tail]] + if {[string index $baseUrl end] ne {/}} { + append baseUrl / + } + set tclkit $baseUrl[dict get $buildInfo filename] + + puts "Downloading $tclkit to $filename..." + exec curl -o $filename $tclkit >@ stdout 2>@ stderr + + catch {exec chmod +x $filename} +} + +set url [lindex $argv 0] +if {$url eq {}} { + puts "usage: $argv0 url" + puts {The URL should be a KitCreator Web Interface buildinfo page.\ + If it is instead, e.g., a building page or a direct Tclkit download\ + URL, the script will try to guess where the buildinfo is.} +} else { + download $url +} Index: build/web/building.cgi ================================================================== --- build/web/building.cgi +++ build/web/building.cgi @@ -71,10 +71,15 @@ } "staticlibssl" { if {$value} { append description ", Statically linked to LibSSL" } + } + "staticpkgs" { + if {$value} { + append description ", With Tcl 8.6+ pkgs/ directory all packages statically linked in" + } } "storage" { switch -- $value { "mk4" { append description ", Metakit-based" Index: build/web/kitcreator.vfs/index.rvt ================================================================== --- build/web/kitcreator.vfs/index.rvt +++ build/web/kitcreator.vfs/index.rvt @@ -17,14 +17,16 @@ set tcl_versions(8.5.15) 8.5.15 set tcl_versions(8.5.16) 8.5.16 set tcl_versions(8.5.17) 8.5.17 set tcl_versions(8.5.18) 8.5.18 + set tcl_versions(8.5.19) 8.5.19 set tcl_versions(8.6.1) 8.6.1 set tcl_versions(8.6.2) 8.6.2 set tcl_versions(8.6.3) 8.6.3 set tcl_versions(8.6.4) 8.6.4 + set tcl_versions(8.6.5) 8.6.5 set tcl_versions(fossil_trunk) "Fossil Trunk Tip" set platforms(android-arm) "Android/ARM" set platforms(freebsd-amd64) "FreeBSD/amd64" set platforms(hpux-hppa64) "HP-UX/PA-RISC 2.0" @@ -120,10 +122,16 @@ set build_options(minbuild) 1 } "option_staticlibssl" { set build_options(staticlibssl) 1 } + "option_staticpkgs" { + set build_options(staticpkgs) 1 + } + "option_tclutfmax6" { + set build_options(tclutfmax6) 1 + } "option_storage" { switch -- $args($arg) { "mk4" - "zip" - "cvfs" { set build_options(storage) $args($arg) } @@ -359,10 +367,12 @@ Kit: Threaded
Kit: Debugging Build
Kit: Build Library (KitDLL)
Kit: Always link Tk dynamically (if Tk is built)
Kit: "Minimal" build (remove extra packages shipped as part of Tcl and reduce encodings)
+ Kit: Statically link packages in pkgs directory
+ Kit: TCL_UTF_MAX=6 (incompatibility with standard Tcl)
TLS: Statically link to LibSSL Kit Storage: Index: build/web/process_queue ================================================================== --- build/web/process_queue +++ build/web/process_queue @@ -106,10 +106,20 @@ } "staticlibssl" { if {$value} { set ::env(KC_TLS_LINKSSLSTATIC) 1 } + } + "staticpkgs" { + if {$value} { + set ::env(KC_TCL_STATICPKGS) 1 + } + } + "tclutfmax6" { + if {$value} { + set ::env(KC_TCL_UTF_MAX) 6 + } } "staticmk4" { } } } @@ -125,11 +135,11 @@ catch { set cmd [list $script $buildinfo(tcl_version) {*}$args] set fd [open "${outfile}.log" w+] puts $fd "Running: export KITCREATOR_PKGS=\"$::env(KITCREATOR_PKGS)\"" - foreach variable [list STRIP STATICTK KITCREATOR_MINENCODINGS KITCREATOR_MINBUILD KC_TLS_LINKSSLSTATIC] { + foreach variable [list STRIP STATICTK KITCREATOR_MINENCODINGS KITCREATOR_MINBUILD KC_TLS_LINKSSLSTATIC KC_TCL_STATICPKGS KC_TCL_UTF_MAX] { if {[info exists ::env($variable)]} { puts $fd "Running: export $variable=\"$::env($variable)\"" } } ADDED common/helpers/download Index: common/helpers/download ================================================================== --- /dev/null +++ common/helpers/download @@ -0,0 +1,120 @@ +#! /usr/bin/env bash + +url="$1" +file="$2" +hash="$3" + +if [ "${#}" != '3' ]; then + echo 'Usage: download ' >&2 + + exit 1 +fi + +for tryDownloadProgram in wget curl; do + tryDownloadProgramPath="$(which "${tryDownloadProgram}" 2>/dev/null)" + + if [ -z "${tryDownloadProgramPath}" ]; then + continue + fi + + if [ -x "${tryDownloadProgramPath}" ]; then + downloadProgram="${tryDownloadProgram}" + downloadProgramPath="${tryDownloadProgramPath}" + + break + fi +done + +case "${hash}" in + ????????????????????????????????????????) + hashMethod='sha1' + ;; + ????????????????????????????????????????????????????????????????) + hashMethod='sha256' + ;; + -) + hashMethod='null' + ;; + *) + echo "Unknown hash method for hash ${hash}" >&2 + + exit 1 + ;; +esac + +function downloadFile() { + local file urls + local downloadProgramArgs + local url + local authoritativeURL + + file="$1" + shift + + urls=("$@") + + authoritativeURL="${urls[@]: -1}" + + case "${downloadProgram}" in + curl) + downloadProgramArgs=(--header "X-Cache-URL: ${authoritativeURL}" --location --insecure --fail --output "${file}") + ;; + wget) + downloadProgramArgs=(--header="X-Cache-URL: ${authoritativeURL}" --no-check-certificate --output-document="${file}") + ;; + esac + + for url in "${urls[@]}" __fail__; do + rm -f "${file}" + + if [ "${url}" = '__fail__' ]; then + return 1 + fi + + "${downloadProgram}" "${downloadProgramArgs[@]}" "${url}" && break + done + + return 0 +} + +function verifyHash() { + local file hash hashMethod + local checkHash + + file="$1" + hash="$2" + hashMethod="$3" + + if [ "${hashMethod}" = 'null' ]; then + return 0 + fi + + checkHash="$(openssl dgst "-${hashMethod}" "${file}" | sed 's@.*= *@@')" + + if [ "${checkHash}" = "${hash}" ]; then + return 0 + fi + + echo "Hash (${hashMethod}) mismatch: Got: ${checkHash}; Expected: ${hash}" >&2 + + return 1 +} + +rm -f "${file}.new" || exit 1 + +urls=("${url}") + +if [ "${hashMethod}" != 'null' ]; then + urls=( + "http://hashcache.rkeene.org/${hashMethod}/${hash}" + "${urls[@]}" + ) +fi + +downloadFile "${file}.new" "${urls[@]}" || exit 1 + +verifyHash "${file}.new" "${hash}" "${hashMethod}" || exit 1 + +mv "${file}.new" "${file}" || exit 1 + +exit 0 Index: dbus/build.sh ================================================================== --- dbus/build.sh +++ dbus/build.sh @@ -19,10 +19,11 @@ # The dbus package DBUSVERS="2.0" SRC="src/dbus-${DBUSVERS}.tar.gz" SRCURL="http://sourceforge.net/projects/dbus-tcl/files/dbus/${DBUSVERS}/dbus-${DBUSVERS}.tar.gz/download" +SRCHASH='-' BUILDDIR="$(pwd)/build/dbus-${DBUSVERS}" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" export DBUSVERS SRC SRCURL BUILDDIR OUTDIR INSTDIR @@ -35,13 +36,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 Index: itcl/build.sh ================================================================== --- itcl/build.sh +++ itcl/build.sh @@ -9,14 +9,15 @@ echo 'ERROR: The TCLVERS environment variable is not set' >&2 exit 1 fi -ITCLVERS="3.4.2" +ITCLVERS="3.4.3" ITCLVERSEXTRA="" SRC="src/itcl-${ITCLVERS}.tar.gz" -SRCURL="http://sourceforge.net/projects/incrtcl/files/%5BIncr%20Tcl_Tk%5D-source/${ITCLVERS}/itcl${ITCLVERS}${ITCLVERSEXTRA}.tar.gz/download" +SRCURL="http://sourceforge.net/projects/incrtcl/files/%5BIncr%20Tcl_Tk%5D-source/Itcl%20${ITCLVERS}/itcl${ITCLVERS}${ITCLVERSEXTRA}.tar.gz/download" +SRCHASH='28b55f44a2fd450862a6f12982c00c1d03d767f62a834d83945a616e06068887' BUILDDIR="$(pwd)/build/itcl${ITCLVERS}" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" export ITCLVERS SRC SRCURL BUILDDIR OUTDIR INSTDIR @@ -30,10 +31,15 @@ rm -rf 'build' 'out' 'inst' mkdir 'build' 'out' 'inst' || exit 1 # Determine if Itcl is even needed ( + # Always build if we are being forced to build + if [ "${KITCREATOR_ITCL3_FORCE}" = '1' ]; then + exit 0 + fi + TCL_VERSION="unknown" if [ -f "${TCLCONFIGDIR}/tclConfig.sh" ]; then source "${TCLCONFIGDIR}/tclConfig.sh" fi @@ -57,13 +63,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 Index: kitcreator ================================================================== --- kitcreator +++ kitcreator @@ -11,17 +11,21 @@ shift ;; esac # Determine which Tcl version to build -TCLVERS="8.6.4" +TCLVERS="8.6.5" if echo "$1" | grep '^[0-9][0-9]*\.' >/dev/null || echo "$1" | egrep '^(cvs|fossil)_' >/dev/null; then TCLVERS="$1" shift fi export TCLVERS + +# Add the helpers directory to the path +PATH="$(cd "$(dirname "$(which "$0")")" && pwd)"/common/helpers:"${PATH}" +export PATH # Verify that "pre.sh" has been run if this is a development snapshot of # KitCreator if [ -f 'build/pre.sh' ]; then if ! find 'kitsh/buildsrc/' -name configure -type f 2>/dev/null | grep configure >/dev/null; then @@ -155,10 +159,37 @@ break fi done export TCLSH_NATIVE + +# Verify that each component is happy with the environment +validatefailed="0" +for pkg in tcl tclvfs zlib ${KITCREATOR_PKGS} kitsh; do + failed='0' + if [ -f "${pkg}/.success" ]; then + continue + fi + + if [ -x "${pkg}/validate.sh" ]; then + ( + cd "${pkg}" >/dev/null 2>/dev/null || exit 1 + + ./validate.sh 3>&1 4>&2 > build.log 2>&1 || exit 1 + ) || failed="1" + + if [ "${failed}" = '1' ]; then + echo "Failed pre-requisite check for ${pkg}" >&2 + + validatefailed='1' + fi + fi +done + +if [ "${validatefailed}" = '1' ]; then + exit 1 +fi # Do build failedpkgs="" buildfailed="0" for pkg in tcl tclvfs zlib ${KITCREATOR_PKGS} kitsh; do Index: kitsh/build.sh ================================================================== --- kitsh/build.sh +++ kitsh/build.sh @@ -34,11 +34,11 @@ rm -rf 'build' 'out' 'inst' mkdir 'out' 'inst' || exit 1 ( - cp -r 'buildsrc' 'build' + cp -rp 'buildsrc' 'build' cd "${BUILDDIR}" || exit 1 # Fix up archives that Tcl gets wrong for archive in ../../../tcl/inst/lib/dde*/tcldde*.a ../../../tcl/inst/lib/reg*/tclreg*.a; do if [ ! -f "${archive}" ]; then @@ -113,11 +113,15 @@ # Cleanup rm -f kit kit.exe tclsh tclsh.exe # Determine if target is KitDLL or KitSH if [ "${KITTARGET}" = "kitdll" ]; then - CONFIGUREEXTRA="${CONFIGUREEXTRA} --enable-kitdll" + if [ "${KITCREATOR_STATIC_KITDLL}" = '1' ]; then + CONFIGUREEXTRA="${CONFIGUREEXTRA} --enable-kitdll=static" + else + CONFIGUREEXTRA="${CONFIGUREEXTRA} --enable-kitdll" + fi fi # Compile Kit if [ -z "${ZLIBDIR}" ]; then echo "Running: ./configure --with-tcl=\"${TCLCONFIGDIR}\" ${CONFIGUREEXTRA}" @@ -166,11 +170,11 @@ for chkkittarget in libtclkit*.*; do if [ ! -f "${chkkittarget}" ]; then continue fi - if echo "${chkkittarget}" | egrep '\.(lib|def|a)$'; then + if echo "${chkkittarget}" | egrep '\..*\.(lib|def|a)$'; then continue fi KITTARGET_NAME="./${chkkittarget}" Index: kitsh/buildsrc/kitsh-0.0/Makefile.common.in ================================================================== --- kitsh/buildsrc/kitsh-0.0/Makefile.common.in +++ kitsh/buildsrc/kitsh-0.0/Makefile.common.in @@ -14,10 +14,12 @@ EXTRA_KIT_DEPS = @EXTRA_KIT_DEPS@ EXTRA_VFS_OBJS = @EXTRA_VFS_OBJS@ TCLSH_NATIVE = tclsh LDFLAGS_ADD = @LDFLAGS_ADD@ DIR2C_FLAGS = @DIR2C_FLAGS@ +AR = @AR@ +RANLIB = @RANLIB@ # Build targets ## VFS Build cvfs_data_tcl.o: cvfs_data_tcl.c cvfs_data_tcl.c: dir2c.tcl starpack.vfs cvfs_data.c @@ -43,10 +45,11 @@ kit.res.o: kit.rc tclkit.ico $(RC) -o kit.res.o $(CPPFLAGS) kit.rc # Cleanup routines clean: + rm -rf __TMP__ rm -f kit kit.res.o rm -f libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ rm -f $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) rm -f cvfs_data_tcl.c cvfs_data_tcl.o rm -f cvfs.tcl.h Index: kitsh/buildsrc/kitsh-0.0/Makefile.kitdll.in ================================================================== --- kitsh/buildsrc/kitsh-0.0/Makefile.kitdll.in +++ kitsh/buildsrc/kitsh-0.0/Makefile.kitdll.in @@ -1,11 +1,14 @@ OBJS = kitInit.o rechan.o pwb.o zlib.o # Default target -all: libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ +all: @TARGET@ -include Makefile.common + +kitdll: libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ +kitdll-static: libtclkit@KITDLL_LIB_VERSION@.a ## DLL Build libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@: $(OBJS) $(EXTRA_KIT_DEPS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(CC) $(CPPFLAGS) $(CFLAGS) -o libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) @WHOLEARCHIVE@ $(ARCHS) @NOWHOLEARCHIVE@ $(LIBS) $(LDFLAGS_ADD) -for striplib in $(STRIPLIBS); do $(OBJCOPY) --weaken "$${striplib}"; done @@ -12,13 +15,27 @@ -mv libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@.safe; \ $(CC) $(CPPFLAGS) $(CFLAGS) -o libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) @WHOLEARCHIVE@ $(ARCHS) @NOWHOLEARCHIVE@ $(LIBS) || \ mv libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@.safe libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ -rm -f libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@.safe +## Static archive build +libtclkit@KITDLL_LIB_VERSION@.a: $(OBJS) $(EXTRA_KIT_DEPS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) + rm -f libtclkit@KITDLL_LIB_VERSION@.a.new + rm -rf __TMP__ + mkdir __TMP__ + for arch in $(ARCHS); do ( cd __TMP__ && ar x ../$${arch} ); done + $(OBJCOPY) --redefine-sym Tcl_Init=Tcl_InitReal --redefine-sym _Tcl_Init=_Tcl_InitReal __TMP__/tclInterp.o + $(AR) cr libtclkit@KITDLL_LIB_VERSION@.a.new $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) __TMP__/*.o + rm -rf __TMP__ + $(RANLIB) libtclkit@KITDLL_LIB_VERSION@.a.new + mv libtclkit@KITDLL_LIB_VERSION@.a.new libtclkit@KITDLL_LIB_VERSION@.a + # Test driver tclsh.o: tclsh.c -tclsh: tclsh.o $(EXTRA_OBJS) libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ +tclsh: tclsh.o $(EXTRA_OBJS) @TARGET@ $(CC) $(CPPFLAGS) $(CFLAGS) -o tclsh tclsh.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ $(LDRUNPATH) wish.o: wish.c wish: wish.o $(EXTRA_OBJS) libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(CC) $(CPPFLAGS) $(CFLAGS) $(WISH_CFLAGS) -o wish wish.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ $(LDRUNPATH) + +.PHONY: kitdll kitdll-static Index: kitsh/buildsrc/kitsh-0.0/boot.tcl ================================================================== --- kitsh/buildsrc/kitsh-0.0/boot.tcl +++ kitsh/buildsrc/kitsh-0.0/boot.tcl @@ -163,23 +163,30 @@ } # Now that the initialization is complete, mount the user VFS if needed ## Mount the VFS from the Shared Object if {[info exists ::TCLKIT_INITVFS] && [info exists ::tclKitFilename]} { - catch { + if {![catch { vfs::zip::Mount $::tclKitFilename "/.KITDLL_USER" + }]} { + if {[file exists "/.KITDLL_USER"]} { + lappend auto_path [file normalize "/.KITDLL_USER/lib"] + } } } - lappend auto_path "/.KITDLL_USER/lib" + ## Mount the VFS from executable if {[info exists ::TCLKIT_INITVFS]} { - catch { + if {![catch { vfs::zip::Mount [info nameofexecutable] "/.KITDLL_APP" + }]} { + if {[file exists "/.KITDLL_APP"]} { + lappend auto_path [file normalize "/.KITDLL_APP/lib"] + } } } - lappend auto_path "/.KITDLL_APP/lib" } # Clean up unset -nocomplain ::zip::max_header_seek unset -nocomplain ::TCLKIT_TYPE ::TCLKIT_INITVFS Index: kitsh/buildsrc/kitsh-0.0/config.guess ================================================================== --- kitsh/buildsrc/kitsh-0.0/config.guess +++ kitsh/buildsrc/kitsh-0.0/config.guess @@ -1,16 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2012-02-10' +timestamp='2016-04-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU @@ -20,23 +18,21 @@ # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] @@ -52,13 +48,11 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" @@ -135,10 +129,31 @@ UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) @@ -151,24 +166,31 @@ # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) + arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). @@ -179,10 +201,17 @@ fi ;; *) os=netbsd ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a @@ -190,22 +219,30 @@ case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} @@ -214,10 +251,13 @@ echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; @@ -230,46 +270,46 @@ # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) @@ -300,11 +340,11 @@ echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) + arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; @@ -338,20 +378,20 @@ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) @@ -372,11 +412,11 @@ sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) @@ -558,12 +598,13 @@ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; @@ -596,17 +637,17 @@ 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build @@ -641,15 +682,15 @@ default: puts ("hppa1.0"); break; } exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -658,16 +699,16 @@ # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) @@ -768,18 +809,18 @@ exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; @@ -799,14 +840,17 @@ esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; - i*:MSYS*:*) + *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 @@ -850,25 +894,25 @@ prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; @@ -877,63 +921,64 @@ EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo ${UNAME_MACHINE}-unknown-linux-gnueabi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else - echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU @@ -948,58 +993,67 @@ CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; - or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-gnu + echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu + echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu + echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu + echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. @@ -1071,11 +1125,11 @@ pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 @@ -1199,10 +1253,13 @@ echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} @@ -1217,36 +1274,51 @@ echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; @@ -1254,11 +1326,11 @@ echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; - NSE-?:NONSTOP_KERNEL:*:*) + NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; @@ -1273,11 +1345,11 @@ exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 @@ -1315,11 +1387,11 @@ esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) @@ -1326,173 +1398,25 @@ echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac cat >&2 < in order to provide the needed information to handle your system. Index: kitsh/buildsrc/kitsh-0.0/config.sub ================================================================== --- kitsh/buildsrc/kitsh-0.0/config.sub +++ kitsh/buildsrc/kitsh-0.0/config.sub @@ -1,46 +1,41 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. - -timestamp='2012-04-18' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or +# Copyright 1992-2016 Free Software Foundation, Inc. + +timestamp='2016-03-30' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. +# Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations @@ -56,12 +51,11 @@ # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit @@ -71,13 +65,11 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" @@ -120,13 +112,13 @@ # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | linux-musl | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -154,11 +146,11 @@ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) + -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk @@ -257,25 +249,29 @@ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | be32 | be64 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ | bfin \ - | c4x | clipper \ + | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ @@ -285,37 +281,41 @@ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ - | nios | nios2 \ + | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ - | open8 \ - | or32 \ + | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ + | riscv32 | riscv64 \ | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; @@ -326,11 +326,14 @@ basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; @@ -368,30 +371,33 @@ 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ + | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ @@ -401,39 +407,45 @@ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ + | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ + | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ + | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) @@ -506,10 +518,13 @@ ;; aros) basic_machine=i386-pc os=-aros ;; + asmjs) + basic_machine=asmjs-unknown + ;; aux) basic_machine=m68k-apple os=-aux ;; balance) @@ -767,10 +782,13 @@ ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) @@ -786,15 +804,19 @@ ;; merlin) basic_machine=ns32k-utek os=-sysv ;; - microblaze) + microblaze*) basic_machine=microblaze-xilinx ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; mingw32) - basic_machine=i386-pc + basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce @@ -818,19 +840,23 @@ ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) - basic_machine=i386-pc + basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs @@ -1017,11 +1043,15 @@ ;; pw32) basic_machine=i586-unknown os=-pw32 ;; - rdos) + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k @@ -1344,33 +1374,34 @@ # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ + | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) @@ -1490,20 +1521,19 @@ os=-mint ;; -aros*) os=-aros ;; - -kaos*) - os=-kaos - ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) + ;; + -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. @@ -1540,10 +1570,16 @@ arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) Index: kitsh/buildsrc/kitsh-0.0/configure.ac ================================================================== --- kitsh/buildsrc/kitsh-0.0/configure.ac +++ kitsh/buildsrc/kitsh-0.0/configure.ac @@ -15,10 +15,13 @@ AC_ARG_ENABLE(kitdll, AC_HELP_STRING([--enable-kitdll], [Enable building KitDLL instead of Tclkit (default: no)]), [ AS_CASE([$enableval], [yes|kitdll], [ TARGET="kitdll" ], + static, [ + TARGET="kitdll-static" + ], no, [ true ], [ AC_MSG_RESULT([unknown]) @@ -25,22 +28,26 @@ AC_MSG_ERROR([Invalid option: $enableval]) ] ) ]) AC_MSG_RESULT([$TARGET]) +AC_SUBST(TARGET) dnl Find the appropriate libraries to link to AC_SEARCH_LIBS(acos, m,, [ AC_MSG_WARN([Couldn't find acos (normally in libm)!]) ]) AC_SEARCH_LIBS(dlsym, dl,, [ AC_MSG_WARN([Couldn't find dlsym (normally in libdl)!]) ]) AS_IF([test "$TARGET" = "tclkit"], [ dnl We have Tclkit + TARGET_BASE='tclkit' dnl Specify local Appinit function AC_DEFINE(TK_LOCAL_APPINIT, [TclKit_AppInit], [Tclkit appinit function]) + ], [ dnl We have KitDLL + TARGET_BASE='kitdll' dnl Determine system information DC_CHK_OS_INFO dnl Determine how to create a shared object @@ -49,10 +56,18 @@ dnl Determine if we have "objcopy" available to weaken non-Tcl/Tk symbols AC_CHECK_TOOL(OBJCOPY, objcopy, [:]) dnl Define KitDLL usage AC_DEFINE([TCLKIT_DLL], [1], [Define if you are using a KitDLL rather than a Tclkit]) + + dnl Define a static KitDLL + AS_IF([test "$TARGET" = "kitdll-static"], [ + AC_CHECK_TOOL(RANLIB, [ranlib], [:]) + AC_CHECK_TOOL(AR, [ar], [false MISSING AR]) + + AC_DEFINE([TCLKIT_DLL_STATIC], [1], [Define if you are building a static KitDLL]) + ]) ]) dnl Figure out how to statically link to libgcc, if needed DC_STATIC_LIBGCC @@ -199,9 +214,9 @@ AC_SUBST(EXTRA_KIT_DEPS) AC_SUBST(LDFLAGS_ADD) dnl Put correct Makefile template in place rm -f Makefile.in -cp Makefile.${TARGET}.in Makefile.in +cp Makefile.${TARGET_BASE}.in Makefile.in dnl Produce output AC_OUTPUT(Makefile Makefile.common) Index: kitsh/buildsrc/kitsh-0.0/kitInit.c ================================================================== --- kitsh/buildsrc/kitsh-0.0/kitInit.c +++ kitsh/buildsrc/kitsh-0.0/kitInit.c @@ -207,11 +207,11 @@ "set ::TCLKIT_TYPE \"kitdll\"\n" #else "set ::TCLKIT_TYPE \"tclkit\"\n" #endif /* TCLKIT_DLL */ "set ::TCLKIT_MOUNTPOINT " TCLKIT_MOUNTPOINT "\n" - "set ::TCLKIT_VFSSOURCE " TCLKIT_VFSSOURCE "\n" + "catch { set ::TCLKIT_VFSSOURCE " TCLKIT_VFSSOURCE " }\n" "set ::TCLKIT_MOUNTPOINT_VAR {" TCLKIT_MOUNTPOINT "}\n" "set ::TCLKIT_VFSSOURCE_VAR {" TCLKIT_VFSSOURCE "}\n" "uplevel #0 $s\n" #if defined(KIT_INCLUDES_TK) && defined(KIT_TK_VERSION) "package ifneeded Tk " KIT_TK_VERSION " {\n" @@ -569,11 +569,29 @@ #ifdef TCLKIT_DLL void __attribute__((constructor)) _Tclkit_Init(void) { #else static void _Tclkit_Init(void) { #endif + static int called = 0; + + if (called) { + return; + } + + called = 1; + Tcl_StaticPackage(0, "tclkit::init", Tclkit_init_Init, NULL); _Tclkit_Generic_Init(); return; } + +#if defined(TCLKIT_DLL) && defined(TCLKIT_DLL_STATIC) +int Tcl_InitReal(Tcl_Interp *interp); + +int Tcl_Init(Tcl_Interp *interp) { + _Tclkit_Init(); + + return(Tcl_InitReal(interp)); +} +#endif Index: mk4tcl/build.sh ================================================================== --- mk4tcl/build.sh +++ mk4tcl/build.sh @@ -13,10 +13,11 @@ MK4VERS="2.4.9.7" SRC="src/metakit-${MK4VERS}.tar.gz" SRCURL="http://www.equi4.com/pub/mk/metakit-${MK4VERS}.tar.gz" SRCURL="http://pkgs.fedoraproject.org/repo/pkgs/metakit/metakit-${MK4VERS}.tar.gz/17330257376eea657827ed632ea62c9e/metakit-${MK4VERS}.tar.gz" +SRCHASH='d1ba361d2d8517925cff5c23e8602822da9c8c347a75a15c225ec656ff7ca94d' BUILDDIR="$(pwd)/build/metakit-${MK4VERS}" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" PATCHDIR="$(pwd)/patches" export MK4VERS SRC SRCURL BUILDDIR OUTDIR INSTDIR PATCHDIR @@ -40,13 +41,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 Index: nsf/build.sh ================================================================== --- nsf/build.sh +++ nsf/build.sh @@ -13,10 +13,11 @@ NSFVERS="2.0.0" NSFVERSEXTRA="" SRC="src/nsf${NSFVERS}.tar.gz" SRCURL="http://sourceforge.net/projects/next-scripting/files/${NSFVERS}/nsf${NSFVERS}.tar.gz/download" +SRCHASH='-' BUILDDIR="$(pwd)/build/nsf${NSFVERS}" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" export NSFVERS SRC SRCURL BUILDDIR OUTDIR INSTDIR @@ -32,13 +33,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 Index: tcc4tcl/build.sh ================================================================== --- tcc4tcl/build.sh +++ tcc4tcl/build.sh @@ -9,13 +9,14 @@ echo 'ERROR: The TCLVERS environment variable is not set' >&2 exit 1 fi -TCC4TCLVERS="0.23" +TCC4TCLVERS="0.26" SRC="src/tcc4tcl-${TCC4TCLVERS}.tar.gz" SRCURL="http://rkeene.org/devel/tcc4tcl/tcc4tcl-${TCC4TCLVERS}.tar.gz" +SRCHASH='8116d2ab94cc611c4e0be81e34bd8cc11a6f3e1fd49d02d7e894bbadcfffde0b' BUILDDIR="$(pwd)/build/tcc4tcl-${TCC4TCLVERS}" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" PATCHDIR="$(pwd)/patches" export TCC4TCLVERS SRC SRCURL BUILDDIR OUTDIR INSTDIR PATCHDIR @@ -38,13 +39,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 Index: tcl/build.sh ================================================================== --- tcl/build.sh +++ tcl/build.sh @@ -11,16 +11,23 @@ exit 1 fi SRC="src/tcl${TCLVERS}.tar.gz" SRCURL="http://prdownloads.sourceforge.net/tcl/tcl${TCLVERS}-src.tar.gz" +SRCHASH='-' BUILDDIR="$(pwd)/build/tcl${TCLVERS}" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" PATCHSCRIPTDIR="$(pwd)/patchscripts" PATCHDIR="$(pwd)/patches" export SRC SRCURL BUILDDIR OUTDIR INSTDIR PATCHSCRIPTDIR PATCHDIR + +case "${TCLVERS}" in + 8.6.4) + SRCHASH='9e6ed94c981c1d0c5f5fefb8112d06c6bf4d050a7327e95e71d417c416519c8d' + ;; +esac # Set configure options for this sub-project LDFLAGS="${LDFLAGS} ${KC_TCL_LDFLAGS}" CFLAGS="${CFLAGS} ${KC_TCL_CFLAGS}" CPPFLAGS="${CPPFLAGS} ${KC_TCL_CPPFLAGS}" @@ -63,11 +70,11 @@ mkdir "${workdir}" || exit 1 cd "${workdir}" || exit 1 # Handle Tcl first, since it will be used to base other packages on - wget -O "tmp-tcl.tar.gz" "http://core.tcl.tk/tcl/tarball/tcl-fossil.tar.gz?uuid=${FOSSILTAG}" || rm -f 'tmp-tcl.tar.gz' + download "http://core.tcl.tk/tcl/tarball/tcl-fossil.tar.gz?uuid=${FOSSILTAG}" "tmp-tcl.tar.gz" - || rm -f 'tmp-tcl.tar.gz' gzip -dc 'tmp-tcl.tar.gz' | tar -xf - mv "tcl-fossil" "tcl${TCLVERS}" # Determine date of this Tcl release and use that date for all other dependent packages ## Unless the release we are talking about is "trunk", in which case we use that everywhere @@ -81,25 +88,25 @@ if [ -z "${FOSSILDATE}" ]; then FOSSILDATE="${FOSSILTAG}" fi # Handle other packages - wget -O "tmp-itcl.tar.gz" "http://core.tcl.tk/itcl/tarball/itcl-fossil.tar.gz?uuid=${FOSSILDATE}" || rm -f 'tmp-itcl.tar.gz' - wget -O "tmp-thread.tar.gz" "http://core.tcl.tk/thread/tarball/thread-fossil.tar.gz?uuid=${FOSSILDATE}" || rm -f "tmp-thread.tar.gz" - wget -O "tmp-tclconfig.tar.gz" "http://core.tcl.tk/tclconfig/tarball/tclconfig-fossil.tar.gz?uuid=${FOSSILDATE}" || rm -f "tmp-tclconfig.tar.gz" + download "http://core.tcl.tk/itcl/tarball/itcl-fossil.tar.gz?uuid=${FOSSILDATE}" "tmp-itcl.tar.gz" - || rm -f 'tmp-itcl.tar.gz' + download "http://core.tcl.tk/thread/tarball/thread-fossil.tar.gz?uuid=${FOSSILDATE}" "tmp-thread.tar.gz" - || rm -f "tmp-thread.tar.gz" + download "http://core.tcl.tk/tclconfig/tarball/tclconfig-fossil.tar.gz?uuid=${FOSSILDATE}" "tmp-tclconfig.tar.gz" - || rm -f "tmp-tclconfig.tar.gz" if [ "${FOSSILDATE}" = "trunk" ] || [ "$(echo "${FOSSILDATE}" | cut -f 1 -d '-')" -ge '2012' ]; then _USE_TDBC='1' _USE_SQLITE='1' SQLITEVERS='3071401' fi if [ "${_USE_TDBC}" = '1' ]; then - wget -O "tmp-tdbc.tar.gz" "http://core.tcl.tk/tdbc/tarball/tdbc-fossil.tar.gz?uuid=${FOSSILDATE}" || rm -f "tmp-tdbc.tar.gz" + download "http://core.tcl.tk/tdbc/tarball/tdbc-fossil.tar.gz?uuid=${FOSSILDATE}" "tmp-tdbc.tar.gz" - || rm -f "tmp-tdbc.tar.gz" fi if [ "${_USE_SQLITE}" = '1' ]; then - wget -O "tmp-sqlite3.tar.gz" "http://www.sqlite.org/sqlite-autoconf-${SQLITEVERS}.tar.gz" || rm -f "tmp-sqlite3.tar.gz" + download "http://www.sqlite.org/sqlite-autoconf-${SQLITEVERS}.tar.gz" "tmp-sqlite3.tar.gz" - || rm -f "tmp-sqlite3.tar.gz" fi gzip -dc "tmp-itcl.tar.gz" | tar -xf - gzip -dc "tmp-thread.tar.gz" | tar -xf - gzip -dc "tmp-tclconfig.tar.gz" | tar -xf - @@ -149,22 +156,16 @@ rm -rf "${workdir}" ) || exit 1 else if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || ( + download "${SRCURL}" "${SRC}" "${SRCHASH}" || ( echo ' Unable to download source code for Tcl.' >&4 - echo " Attempted to run: wget -O \"${SRC}.tmp\" \"${SRCURL}\"" >&4 - echo " Got:" - wget -O "${SRC}.tmp" "${SRCURL}" 2>&1 | sed 's@^@ @' >&4 - echo ' Aborting Tcl -- further packages will likely also fail.' >&4 exit 1 ) || exit 1 - mv "${SRC}.tmp" "${SRC}" fi fi fi ( ADDED tcl/patchscripts/static-kitdll-noextern.sh Index: tcl/patchscripts/static-kitdll-noextern.sh ================================================================== --- /dev/null +++ tcl/patchscripts/static-kitdll-noextern.sh @@ -0,0 +1,15 @@ +#! /bin/bash + +if [ "${KITTARGET}" != "kitdll" ]; then + exit 0 +fi + +if [ "${KITCREATOR_STATIC_KITDLL}" != '1' ]; then + exit 0 +fi + +# For a static KitDLL we are linking directly to the object +# so there is nothing external. +sed 's/define EXTERN .*/define EXTERN/' generic/tcl.h > generic/tcl.h.new +cat generic/tcl.h.new > generic/tcl.h +rm -f generic/tcl.h.new ADDED tcl/patchscripts/tcl-utf-max.sh Index: tcl/patchscripts/tcl-utf-max.sh ================================================================== --- /dev/null +++ tcl/patchscripts/tcl-utf-max.sh @@ -0,0 +1,11 @@ +#! /bin/bash + +if [ -z "${KC_TCL_UTF_MAX}" ]; then + exit 0 +fi + +sed 's@^# *define TCL_UTF_MAX.*$@#define TCL_UTF_MAX '"${KC_TCL_UTF_MAX}"'@' generic/tcl.h > generic/tcl.h.new +cat generic/tcl.h.new > generic/tcl.h +rm -f generic/tcl.h.new + +exit 0 ADDED tcl/validate.sh Index: tcl/validate.sh ================================================================== --- /dev/null +++ tcl/validate.sh @@ -0,0 +1,11 @@ +#! /usr/bin/env bash + +PATCH="${PATCH:-patch}" +if [ ! -x "$(which "${PATCH}" 2>/dev/null)" ]; then + echo "No \"${PATCH}\" command (for patch)." + echo "No \"${PATCH}\" command (for patch)." >&4 + + exit 1 +fi + +exit 0 Index: tcllib/build.sh ================================================================== --- tcllib/build.sh +++ tcllib/build.sh @@ -1,10 +1,11 @@ #! /usr/bin/env bash TCLLIB_VERS='1.16' SRC="src/tcllib-${TCLLIB_VERS}.tar.bz2" SRCURL="http://sourceforge.net/projects/tcllib/files/tcllib/${TCLLIB_VERS}/tcllib-${TCLLIB_VERS}.tar.bz2" +SRCHASH='033334306d3ffc499c8830d393bf7528227e49c68077b3e9247c4171b15be012' BUILDDIR="$(pwd)/build/Tcllib-${TCLLIB_VERS}" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" PATCHDIR="$(pwd)/patches" export TCLLIB_VERS SRC SRCURL BUILDDIR OUTDIR INSTDIR PATCHDIR @@ -14,13 +15,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 Index: tclvfs/build.sh ================================================================== --- tclvfs/build.sh +++ tclvfs/build.sh @@ -12,10 +12,11 @@ fi TCLVFSVERS="20080503" SRC="src/tclvfs-${TCLVFSVERS}.tar.gz" SRCURL="http://sourceforge.net/projects/tclvfs/files/tclvfs/tclvfs-${TCLVFSVERS}/tclvfs-${TCLVFSVERS}.tar.gz/download" +SRCHASH='0d90362078c8f59347b14be377e9306336b6d25d147397f845e705a6fa1d38f2' BUILDDIR="$(pwd)/build/tclvfs-${TCLVFSVERS}" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" PATCHDIR="$(pwd)/patches" export TCLVFSVERS SRC SRCURL BUILDDIR OUTDIR INSTDIR PATCHDIR @@ -38,13 +39,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 Index: tclx/build.sh ================================================================== --- tclx/build.sh +++ tclx/build.sh @@ -12,10 +12,11 @@ fi TCLXVERS="8.4.1" SRC="src/tclx${TCLXVERS}.tar.bz2" SRCURL="http://sourceforge.net/projects/tclx/files/TclX/${TCLXVERS}/tclx${TCLXVERS}.tar.bz2/download" +SRCHASH='-' BUILDDIR="$(pwd)/build/tclx8.4" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" PATCHDIR="$(pwd)/patches" export TCLXVERS SRC SRCURL BUILDDIR OUTDIR INSTDIR PATCHDIR @@ -38,13 +39,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 Index: thread/build.sh ================================================================== --- thread/build.sh +++ thread/build.sh @@ -12,10 +12,11 @@ fi THREADVERS="2.7.2" SRC="src/thread-${THREADVERS}.tar.gz" SRCURL="http://sourceforge.net/projects/tcl/files/Thread%20Extension/${THREADVERS}/thread${THREADVERS}.tar.gz/download" +SRCHASH='-' BUILDDIR="$(pwd)/build/thread${THREADVERS}" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" export THREADVERS SRC SRCURL BUILDDIR OUTDIR INSTDIR @@ -56,13 +57,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 Index: tk/build.sh ================================================================== --- tk/build.sh +++ tk/build.sh @@ -11,16 +11,23 @@ exit 1 fi SRC="src/tk${TCLVERS}.tar.gz" SRCURL="http://prdownloads.sourceforge.net/tcl/tk${TCLVERS}-src.tar.gz" +SRCHASH='-' BUILDDIR="$(pwd)/build/tk${TCLVERS}" PATCHDIR="$(pwd)/patches" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" PATCHSCRIPTDIR="$(pwd)/patchscripts" export SRC SRCURL BUILDDIR PATCHDIR OUTDIR INSTDIR PATCHSCRIPTDIR + +case "${TCLVERS}" in + 8.6.4) + SRCHASH='08f99df85e5dc9c4271762163c6aabb962c8b297dc5c4c1af8bdd05fc2dd26c1' + ;; +esac # Set configure options for this sub-project LDFLAGS="${LDFLAGS} ${KC_TK_LDFLAGS}" CFLAGS="${CFLAGS} ${KC_TK_CFLAGS}" CPPFLAGS="${CPPFLAGS} ${KC_TK_CPPFLAGS}" @@ -79,15 +86,15 @@ rm -rf "${workdir}" mkdir "${workdir}" || exit 1 cd "${workdir}" || exit 1 - wget -O "tmp-tk.tar.gz" "http://core.tcl.tk/tk/tarball/tk-fossil.tar.gz?uuid=${FOSSILTAG}" || rm -f 'tmp-tk.tar.gz' + download "http://core.tcl.tk/tk/tarball/tk-fossil.tar.gz?uuid=${FOSSILTAG}" "tmp-tk.tar.gz" - || rm -f 'tmp-tk.tar.gz' gzip -dc "tmp-tk.tar.gz" | tar -xf - || rm -f 'tmp-tk.tar.gz' if [ ! -s 'tmp-tk.tar.gz' ]; then - wget -O "tmp-tk.tar.gz" "http://core.tcl.tk/tk/tarball/tk-fossil.tar.gz?uuid=${FOSSILDATE}" || rm -f 'tmp-tk.tar.gz' + download "http://core.tcl.tk/tk/tarball/tk-fossil.tar.gz?uuid=${FOSSILDATE}" "tmp-tk.tar.gz" - || rm -f 'tmp-tk.tar.gz' gzip -dc "tmp-tk.tar.gz" | tar -xf - fi mv "tk-fossil" "tk${TCLVERS}" @@ -96,13 +103,11 @@ cd .. rm -rf "${workdir}" ) else if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi fi ( Index: tls/build.sh ================================================================== --- tls/build.sh +++ tls/build.sh @@ -12,10 +12,11 @@ fi TLSVERS="1.6.7" SRC="src/tls-${TLSVERS}.tar.gz" SRCURL="http://sourceforge.net/projects/tls/files/tls/${TLSVERS}/tls${TLSVERS}-src.tar.gz" +SRCHASH='5119de3e5470359b97a8a00d861c9c48433571ee0167af0a952de66c99d3a3b8' BUILDDIR="$(pwd)/build/tls${TLSVERS}" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" PATCHDIR="$(pwd)/patches" export TLSVERS SRC SRCURL BUILDDIR OUTDIR INSTDIR PATCHDIR @@ -38,13 +39,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 @@ -55,11 +54,11 @@ cp -rp ../buildsrc/* './' fi # Determine SSL directory if [ -z "${CPP}" ]; then - CPP="${CC} -E" + CPP="${CC:-cc} -E" fi if [ -n "${KC_TLS_SSLDIR}" ]; then SSLDIR="${KC_TLS_SSLDIR}" else Index: udp/build.sh ================================================================== --- udp/build.sh +++ udp/build.sh @@ -12,10 +12,11 @@ fi TCLUDPVERS="1.0.11" SRC="src/tcludp-${TCLUDPVERS}.tar.gz" SRCURL="http://sourceforge.net/projects/tcludp/files/tcludp/${TCLUDPVERS}/tcludp-${TCLUDPVERS}.tar.gz" +SRCHASH='a8a29d55a718eb90aada643841b3e0715216d27cea2e2df243e184edb780aa9d' BUILDDIR="$(pwd)/build/tcludp" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" PATCHDIR="$(pwd)/patches" export TCLUDPVERS SRC SRCURL BUILDDIR OUTDIR INSTDIR PATCHDIR @@ -38,13 +39,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 Index: yajltcl/build.sh ================================================================== --- yajltcl/build.sh +++ yajltcl/build.sh @@ -14,11 +14,13 @@ YAJLTCLVERS="1.5" YAJLVERS='2.1.0' SRC="src/yajltcl-${YAJLTCLVERS}.tar.gz" YAJLSRC="src/yajl-${YAJLVERS}.tar.gz" SRCURL="https://github.com/flightaware/yajl-tcl/archive/v${YAJLTCLVERS}.tar.gz" +SRCHASH='-' YAJLSRCURL="http://github.com/lloyd/yajl/tarball/${YAJLVERS}" +YAJLSRCHASH='-' BUILDDIR="$(pwd)/build/yajl-tcl-${YAJLTCLVERS}" YAJLBUILDDIR="$(pwd)/build/lloyd-yajl-66cb08c" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" PATCHDIR="$(pwd)/patches" @@ -36,19 +38,15 @@ if [ ! -d 'buildsrc' ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -f "${SRC}" ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi if [ ! -f "${YAJLSRC}" ]; then - rm -f "${YAJLSRC}.tmp" - wget -O "${YAJLSRC}.tmp" "${YAJLSRCURL}" || exit 1 - mv "${YAJLSRC}.tmp" "${YAJLSRC}" + download "${YAJLSRCURL}" "${YAJLSRC}" "${YAJLSRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1 Index: zlib/build.sh ================================================================== --- zlib/build.sh +++ zlib/build.sh @@ -12,10 +12,11 @@ fi ZLIBVERS="1.2.8" SRC="src/zlib-${ZLIBVERS}.tar.gz" SRCURL="http://sourceforge.net/projects/libpng/files/zlib/${ZLIBVERS}/zlib-${ZLIBVERS}.tar.gz/download" +SRCHASH='36658cb768a54c1d4dec43c3116c27ed893e88b02ecfcb44f2166f9c0b7f2a0d' BUILDDIR="$(pwd)/build/zlib-${ZLIBVERS}" OUTDIR="$(pwd)/out" INSTDIR="$(pwd)/inst" export ZLIBVERS SRC SRCURL BUILDDIR OUTDIR INSTDIR @@ -31,13 +32,11 @@ if [ ! -f "${SRC}" ]; then mkdir 'src' >/dev/null 2>/dev/null if [ ! -d 'buildsrc' ]; then - rm -f "${SRC}.tmp" - wget -O "${SRC}.tmp" "${SRCURL}" || exit 1 - mv "${SRC}.tmp" "${SRC}" + download "${SRCURL}" "${SRC}" "${SRCHASH}" || exit 1 fi fi ( cd 'build' || exit 1