Overview
| Comment: | Added NSF build script | 
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive | 
| Timelines: | family | ancestors | descendants | both | trunk | 
| Files: | files | file ages | folders | 
| SHA1: | 2ae580efcd7d99ff7427235e9f5b8869 | 
| User & Date: | rkeene on 2015-10-15 14:21:18 | 
| Other Links: | manifest | tags | 
Context
| 2015-10-23 | ||
| 20:09 | Use TCLSH_NATIVE only when cross-compiling (as indicated by KC_CROSSCOMPILE) check-in: 40706ce9b4 user: ssoberni tags: trunk | |
| 2015-10-15 | ||
| 14:21 | Added NSF build script check-in: 2ae580efcd user: rkeene tags: trunk | |
| 2015-10-08 | ||
| 18:32 | Simplify change in the previous check-in. check-in: 78bb12c14d user: mistachkin tags: trunk | |
Changes
Added nsf/build.sh version [15ddc9112c].
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | 
#! /usr/bin/env bash
if [ ! -f 'build.sh' ]; then
    echo 'ERROR: This script must be run from the directory it is in' >&2
    
    exit 1
fi
if [ -z "${TCLVERS}" ]; then
    echo 'ERROR: The TCLVERS environment variable is not set' >&2
    
    exit 1
fi
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"
BUILDDIR="$(pwd)/build/nsf${NSFVERS}"
OUTDIR="$(pwd)/out"
INSTDIR="$(pwd)/inst"
export NSFVERS SRC SRCURL BUILDDIR OUTDIR INSTDIR
# Set configure options for this sub-project
LDFLAGS="${LDFLAGS} ${KC_NSF_LDFLAGS}"
CFLAGS="${CFLAGS} ${KC_NSF_CFLAGS}"
CPPFLAGS="${CPPFLAGS} ${KC_NSF_CPPFLAGS}"
LIBS="${LIBS} ${KC_NSF_LIBS}"
export LDFLAGS CFLAGS CPPFLAGS LIBS
rm -rf 'build' 'out' 'inst'
mkdir 'build' 'out' 'inst' || exit 1
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}"
    fi
fi
(
    cd 'build' || exit 1
    
    if [ ! -d '../buildsrc' ]; then
	gzip -dc "../${SRC}" | tar -xf -
    else    
	cp -rp ../buildsrc/* './'
    fi
    
    cd "${BUILDDIR}" || exit 1
    # There's a STATIC<packageInAllUpperCase>=-1,0,1
    # ... where -1 means no (i.e., shared),
    # ... 0 means try not to (try shared first, if that
    # 	  doesn't work do static),
    # ... and 1 means try to (try only static)
    
    if [ "${STATICNSF}" = "0" ]; then
	tryopts="--enable-shared --disable-shared"
    elif [ "${STATICNSF}" = "1" ]; then
	tryopts="--disable-shared"
    else
	# -1
	tryopts="--enable-shared"
    fi
    
    SAVE_CFLAGS="${CFLAGS}"
    for tryopt in $tryopts __fail__; do
	# Clean up, if needed
	make distclean >/dev/null 2>/dev/null
	rm -rf "${INSTDIR}"
	mkdir "${INSTDIR}"
	
	if [ "${tryopt}" = "__fail__" ]; then
	    exit 1
	fi
	
	if [ "${tryopt}" == "--enable-shared" ]; then
	    isshared="1"
	else
	    isshared="0"
	fi
	
	# If build a static NSF for KitDLL, ensure that we use PIC
	# so that it can be linked into the shared object
	if [ "${isshared}" = "0" -a "${KITTARGET}" = "kitdll" ]; then
	    CFLAGS="${SAVE_CFLAGS} -fPIC"
	else
	    CFLAGS="${SAVE_CFLAGS}"
	fi
	export CFLAGS
	
	if [ "${isshared}" = '0' ]; then
	    sed 's@USE_TCL_STUBS@XXX_TCL_STUBS@g' configure > configure.new
	else
	    sed 's@XXX_TCL_STUBS@USE_TCL_STUBS@g' configure > configure.new
	fi
	cat configure.new > configure
	rm -f configure.new
	
	(
	    # Build
	    echo "Running: ./configure $tryopt --disable-symbols --prefix=\"${INSTDIR}\" --exec-prefix=\"${INSTDIR}\" --libdir=\"${INSTDIR}/lib\" --with-tcl=\"${TCLCONFIGDIR}\" ${CONFIGUREEXTRA}"
	    ./configure $tryopt --disable-symbols --prefix="${INSTDIR}" --exec-prefix="${INSTDIR}" --libdir="${INSTDIR}/lib" --with-tcl="${TCLCONFIGDIR}" ${CONFIGUREEXTRA}
	    
	    echo "Running: ${MAKE:-make} TCLSH=${TCLSH_NATIVE}"
	    ${MAKE:-make} TCLSH=${TCLSH_NATIVE} || exit 1
	    
	    echo "Running: ${MAKE:-make} install TCLSH=${TCLSH_NATIVE}"
	    ${MAKE:-make} install TCLSH=${TCLSH_NATIVE}
	    
	) || continue
	
	break
    done
    
    mkdir "${OUTDIR}/lib" || exit 1
    cp -r "${INSTDIR}/lib"/nsf*/serialize "${OUTDIR}/lib/nsf${NSFVERS}-serialize"
    cp -r "${INSTDIR}/lib"/nsf*/lib "${OUTDIR}/lib/nsf${NSFVERS}-lib"
    cp -r "${INSTDIR}/lib"/nsf*/nx "${OUTDIR}/lib/nsf${NSFVERS}-nx"
    cp -r "${INSTDIR}/lib"/nsf*/xotcl "${OUTDIR}/lib/nsf${NSFVERS}-xotcl"
    
    mkdir "${OUTDIR}/lib/nsf${NSFVERS}" || exit 1
    
    if [ "${isshared}" = '0' ]; then
	cat << _EOF_ > "${OUTDIR}/lib/nsf${NSFVERS}/pkgIndex.tcl"
package ifneeded nsf ${NSFVERS} "[list load "" nsf]; package provide nsf ${NSFVERS}"
_EOF_
    else
	cp -r "${INSTDIR}/lib"/nsf*/*nsf*.* "${OUTDIR}/lib/nsf${NSFVERS}/"
	cp -r "${INSTDIR}/lib"/nsf*/pkgIndex.tcl "${OUTDIR}/lib/nsf${NSFVERS}/"
    fi
    
    rm -f "${OUTDIR}"/lib/nsf*/*.a
    
    "${STRIP:-strip}" -g "${OUTDIR}"/lib/nsf*/*.so >/dev/null 2>/dev/null
    
    exit 0
) || exit 1
exit 0
 |