13955d011SMarcel Moolenaar: 23955d011SMarcel Moolenaar# NAME: 33955d011SMarcel Moolenaar# boot-strap 43955d011SMarcel Moolenaar# 53955d011SMarcel Moolenaar# SYNOPSIS: 63cbdda60SSimon J. Gerraty# boot-strap ["options"] 73cbdda60SSimon J. Gerraty# boot-strap --prefix=/opt --install 83cbdda60SSimon J. Gerraty# boot-strap --prefix=$HOME --install-host-target -DWITH_PROG_VERSION 93cbdda60SSimon J. Gerraty# boot-strap ["options"] op=build 103cbdda60SSimon J. Gerraty# boot-strap ["options"] op=install 113955d011SMarcel Moolenaar# 123955d011SMarcel Moolenaar# DESCRIPTION: 133955d011SMarcel Moolenaar# This script is used to configure/build bmake it builds for 143cbdda60SSimon J. Gerraty# each host-target in a different subdir to keep the src clean. 153cbdda60SSimon J. Gerraty# There is no requirement for an existing make(1). 163cbdda60SSimon J. Gerraty# 173cbdda60SSimon J. Gerraty# On successful completion if no '--install' flag is given, 183cbdda60SSimon J. Gerraty# it echos a command to do installation. 193cbdda60SSimon J. Gerraty# 203cbdda60SSimon J. Gerraty# The variable "op" defaults to 'all', and is affected by 213cbdda60SSimon J. Gerraty# '--install' flag as above. 223cbdda60SSimon J. Gerraty# Other values include: 233cbdda60SSimon J. Gerraty# 243cbdda60SSimon J. Gerraty# configure 253cbdda60SSimon J. Gerraty# Just run 'configure' 263cbdda60SSimon J. Gerraty# 273cbdda60SSimon J. Gerraty# build 283cbdda60SSimon J. Gerraty# If 'configure' has not been done, do it, then 293cbdda60SSimon J. Gerraty# run the build script, and finally 'test'. 303cbdda60SSimon J. Gerraty# 313cbdda60SSimon J. Gerraty# install 323cbdda60SSimon J. Gerraty# If 'build' has not been done, do it, 'test' then 333cbdda60SSimon J. Gerraty# install. 343cbdda60SSimon J. Gerraty# 353cbdda60SSimon J. Gerraty# clean 363cbdda60SSimon J. Gerraty# attempt to clean up 373cbdda60SSimon J. Gerraty# 383cbdda60SSimon J. Gerraty# test 393cbdda60SSimon J. Gerraty# run the unit-tests. Done automatically after 'build' 403cbdda60SSimon J. Gerraty# and before 'install'. 413cbdda60SSimon J. Gerraty# 423cbdda60SSimon J. Gerraty# The above are leveraged by a trivial makefile for the benefit 433cbdda60SSimon J. Gerraty# of those that have './configure; make; make install' baked 443cbdda60SSimon J. Gerraty# into them. 453955d011SMarcel Moolenaar# 463955d011SMarcel Moolenaar# Options: 473955d011SMarcel Moolenaar# 483955d011SMarcel Moolenaar# -c "rc" 493955d011SMarcel Moolenaar# Pick up settings from "rc". 503955d011SMarcel Moolenaar# We look for '.bmake-boot-strap.rc' before processing 513cbdda60SSimon J. Gerraty# options (unless SKIP_RC is set in environment). 523955d011SMarcel Moolenaar# 533955d011SMarcel Moolenaar# --share "share_dir" 543955d011SMarcel Moolenaar# Where to put man pages and mk files. 553955d011SMarcel Moolenaar# If $prefix ends in $HOST_TARGET, and $prefix/../share 563955d011SMarcel Moolenaar# exits, the default will be that rather than $prefix/share. 573955d011SMarcel Moolenaar# 583955d011SMarcel Moolenaar# --mksrc "mksrc" 593955d011SMarcel Moolenaar# Indicate where the mk files can be found. 603cbdda60SSimon J. Gerraty# Default is $Mydir/mk 613cbdda60SSimon J. Gerraty# 623cbdda60SSimon J. Gerraty# --install 633cbdda60SSimon J. Gerraty# If build and test work, run bmake install. 643cbdda60SSimon J. Gerraty# BINDIR=$prefix/bin 653cbdda60SSimon J. Gerraty# SHAREDIR=$prefix/share 663cbdda60SSimon J. Gerraty# 673cbdda60SSimon J. Gerraty# --install-host-target 683cbdda60SSimon J. Gerraty# As for '--install' but BINDIR=$prefix/$HOST_TARGET/bin 693cbdda60SSimon J. Gerraty# This is useful when $prefix/ is shared by multiple 703cbdda60SSimon J. Gerraty# machines. 713cbdda60SSimon J. Gerraty# 723cbdda60SSimon J. Gerraty# Flags relevant when installing: 733cbdda60SSimon J. Gerraty# 743cbdda60SSimon J. Gerraty# -DWITHOUT_INSTALL_MK 753cbdda60SSimon J. Gerraty# Skip installing mk files. 763cbdda60SSimon J. Gerraty# By default they will be installed to $prefix/share/mk 773cbdda60SSimon J. Gerraty# 783cbdda60SSimon J. Gerraty# -DWITH_PROG_VERSION 793cbdda60SSimon J. Gerraty# Install 'bmake' as 'bmake-$MAKE_VERSION' 803cbdda60SSimon J. Gerraty# A symlink will be made as 'bmake' unless 813cbdda60SSimon J. Gerraty# -DWITHOUT_PROG_LINK is set. 823955d011SMarcel Moolenaar# 833955d011SMarcel Moolenaar# Possibly useful configure_args: 843955d011SMarcel Moolenaar# 853955d011SMarcel Moolenaar# --without-meta 863955d011SMarcel Moolenaar# disable use of meta mode. 873955d011SMarcel Moolenaar# 883955d011SMarcel Moolenaar# --without-filemon 893955d011SMarcel Moolenaar# disable use of filemon(9) which is currently only 903955d011SMarcel Moolenaar# available for NetBSD and FreeBSD. 913955d011SMarcel Moolenaar# 923955d011SMarcel Moolenaar# --with-filemon="path/to/filemon.h" 933955d011SMarcel Moolenaar# enables use of filemon(9) by meta mode. 943955d011SMarcel Moolenaar# 953955d011SMarcel Moolenaar# --with-machine="machine" 963955d011SMarcel Moolenaar# set "machine" to override that determined by 973955d011SMarcel Moolenaar# machine.sh 983955d011SMarcel Moolenaar# 993955d011SMarcel Moolenaar# --with-force-machine="machine" 1003955d011SMarcel Moolenaar# force "machine" even if uname(3) provides a value. 1013955d011SMarcel Moolenaar# 1023955d011SMarcel Moolenaar# --with-machine_arch="machine_arch" 1033955d011SMarcel Moolenaar# set "machine_arch" to override that determined by 1043955d011SMarcel Moolenaar# machine.sh 1053955d011SMarcel Moolenaar# 1063955d011SMarcel Moolenaar# --with-default-sys-path="syspath" 1073955d011SMarcel Moolenaar# set an explicit default "syspath" which is where bmake 1083955d011SMarcel Moolenaar# will look for sys.mk and friends. 1093955d011SMarcel Moolenaar# 1103955d011SMarcel Moolenaar# AUTHOR: 1113955d011SMarcel Moolenaar# Simon J. Gerraty <sjg@crufty.net> 1123955d011SMarcel Moolenaar 1133955d011SMarcel Moolenaar# RCSid: 114*1748de26SSimon J. Gerraty# $Id: boot-strap,v 1.43 2013/03/02 18:55:23 sjg Exp $ 1153955d011SMarcel Moolenaar# 1163955d011SMarcel Moolenaar# @(#) Copyright (c) 2001 Simon J. Gerraty 1173955d011SMarcel Moolenaar# 1183955d011SMarcel Moolenaar# This file is provided in the hope that it will 1193955d011SMarcel Moolenaar# be of use. There is absolutely NO WARRANTY. 1203955d011SMarcel Moolenaar# Permission to copy, redistribute or otherwise 1213955d011SMarcel Moolenaar# use this file is hereby granted provided that 1223955d011SMarcel Moolenaar# the above copyright notice and this notice are 1233955d011SMarcel Moolenaar# left intact. 1243955d011SMarcel Moolenaar# 1253955d011SMarcel Moolenaar# Please send copies of changes and bug-fixes to: 1263955d011SMarcel Moolenaar# sjg@crufty.net 1273955d011SMarcel Moolenaar# 1283955d011SMarcel Moolenaar 1293955d011SMarcel MoolenaarMydir=`dirname $0` 1303955d011SMarcel Moolenaar. "$Mydir/os.sh" 1313955d011SMarcel Moolenaarcase "$Mydir" in 1323955d011SMarcel Moolenaar/*) ;; 1333955d011SMarcel Moolenaar*) Mydir=`cd "$Mydir" && 'pwd'`;; 1343955d011SMarcel Moolenaaresac 1353955d011SMarcel Moolenaar 1363955d011SMarcel MoolenaarUsage() { 1373955d011SMarcel Moolenaar [ "$1" ] && echo "ERROR: $@" >&2 1383955d011SMarcel Moolenaar echo "Usage:" >&2 1393cbdda60SSimon J. Gerraty echo "$0 [--<configure_arg> ...][<prefix>][--install]" >&2 1403955d011SMarcel Moolenaar exit 1 1413955d011SMarcel Moolenaar} 1423955d011SMarcel Moolenaar 1433955d011SMarcel MoolenaarError() { 1443955d011SMarcel Moolenaar echo "ERROR: $@" >&2 1453955d011SMarcel Moolenaar exit 1 1463955d011SMarcel Moolenaar} 1473955d011SMarcel Moolenaar 1483955d011SMarcel Moolenaarsource_rc() { 1493955d011SMarcel Moolenaar rc="$1"; shift 1503955d011SMarcel Moolenaar for d in ${*:-""} 1513955d011SMarcel Moolenaar do 1523955d011SMarcel Moolenaar r="${d:+$d/}$rc" 1533955d011SMarcel Moolenaar [ -f "$r" -a -s "$r" ] || continue 1543955d011SMarcel Moolenaar echo "NOTE: reading $r" 1553955d011SMarcel Moolenaar . "$r" 1563955d011SMarcel Moolenaar break 1573955d011SMarcel Moolenaar done 1583955d011SMarcel Moolenaar} 1593955d011SMarcel Moolenaar 1603cbdda60SSimon J. Gerratycmd_args="$@" 1613cbdda60SSimon J. Gerraty 162*1748de26SSimon J. Gerraty# clear some things from the environment that we care about 163*1748de26SSimon J. Gerratyunset MAKEOBJDIR MAKEOBJDIRPREFIX 164*1748de26SSimon J. Gerraty 1653cbdda60SSimon J. Gerraty# --install[-host-target] will set this 1663cbdda60SSimon J. GerratyINSTALL_PREFIX= 1673cbdda60SSimon J. Gerraty# other things we pass to install step 1683cbdda60SSimon J. GerratyINSTALL_ARGS= 1693955d011SMarcel MoolenaarCONFIGURE_ARGS= 1703955d011SMarcel MoolenaarMAKESYSPATH= 1713955d011SMarcel Moolenaar# pick a useful default prefix (for me at least ;-) 1723955d011SMarcel Moolenaarfor prefix in /opt/$HOST_TARGET "$HOME/$HOST_TARGET" /usr/pkg /usr/local "" 1733955d011SMarcel Moolenaardo 1743cbdda60SSimon J. Gerraty [ -d "${prefix:-.}" ] || continue 1753cbdda60SSimon J. Gerraty case "$prefix" in 1763cbdda60SSimon J. Gerraty */$HOST_TARGET) 1773cbdda60SSimon J. Gerraty p=`dirname $prefix` 1783cbdda60SSimon J. Gerraty if [ -d $p/share ]; then 1793cbdda60SSimon J. Gerraty INSTALL_BIN=$HOST_TARGET/bin 1803cbdda60SSimon J. Gerraty prefix=$p 1813cbdda60SSimon J. Gerraty fi 1823cbdda60SSimon J. Gerraty ;; 1833cbdda60SSimon J. Gerraty esac 1843cbdda60SSimon J. Gerraty echo "NOTE: default prefix=$prefix ${INSTALL_BIN:+INSTALL_BIN=$INSTALL_BIN}" 1853cbdda60SSimon J. Gerraty break 1863955d011SMarcel Moolenaardone 1873cbdda60SSimon J. Gerratysrcdir=$Mydir 1883cbdda60SSimon J. Gerratymksrc=$Mydir/mk 1893955d011SMarcel Moolenaarobjdir= 1903955d011SMarcel Moolenaarquiet=: 1913955d011SMarcel Moolenaar 1923cbdda60SSimon J. Gerraty${SKIP_RC:+:} source_rc .bmake-boot-strap.rc . "$Mydir/.." "$HOME" 1933955d011SMarcel Moolenaar 1943955d011SMarcel Moolenaarget_optarg() { 1953955d011SMarcel Moolenaar expr "x$1" : "x[^=]*=\\(.*\\)" 1963955d011SMarcel Moolenaar} 1973955d011SMarcel Moolenaar 1983cbdda60SSimon J. Gerratyhere=`'pwd'` 1993cbdda60SSimon J. Gerratyif [ $here = $Mydir ]; then 2003cbdda60SSimon J. Gerraty # avoid polution 2013cbdda60SSimon J. Gerraty OBJROOT=../ 2023cbdda60SSimon J. Gerratyfi 2033cbdda60SSimon J. Gerraty 2043cbdda60SSimon J. Gerratyop=all 2053cbdda60SSimon J. GerratyBMAKE= 2063cbdda60SSimon J. Gerraty 2073955d011SMarcel Moolenaarwhile : 2083955d011SMarcel Moolenaardo 2093955d011SMarcel Moolenaar case "$1" in 2103955d011SMarcel Moolenaar --) shift; break;; 2113cbdda60SSimon J. Gerraty --help) sed -n -e "1d;/RCSid/,\$d" -e '/^#\.[a-z]/d' -e '/^#/s,^# *,,p' $0; exit 0;; 2123955d011SMarcel Moolenaar --prefix) prefix="$2"; shift;; 2133955d011SMarcel Moolenaar --prefix=*) prefix=`get_optarg "$1"`;; 2143955d011SMarcel Moolenaar --src=*) srcdir=`get_optarg "$1"`;; 2153955d011SMarcel Moolenaar --with-mksrc=*|--mksrc=*) mksrc=`get_optarg "$1"`;; 2163955d011SMarcel Moolenaar --share=*) share_dir=`get_optarg "$1"`;; 2173955d011SMarcel Moolenaar --share) share_dir="$2"; shift;; 2183955d011SMarcel Moolenaar --with-default-sys-path=*) 2193955d011SMarcel Moolenaar CONFIGURE_ARGS="$1" 2203955d011SMarcel Moolenaar MAKESYSPATH=`get_optarg "$1"`;; 2213955d011SMarcel Moolenaar --with-default-sys-path) 2223955d011SMarcel Moolenaar CONFIGURE_ARGS="$1 $2" 2233955d011SMarcel Moolenaar MAKESYSPATH="$2"; shift;; 2243cbdda60SSimon J. Gerraty --install) INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix};; 2253cbdda60SSimon J. Gerraty --install-host-target) 2263cbdda60SSimon J. Gerraty INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix} 2273cbdda60SSimon J. Gerraty INSTALL_BIN=$HOST_TARGET/bin;; 2283cbdda60SSimon J. Gerraty --install-destdir=*) INSTALL_DESTDIR=`get_optarg "$1"`;; 2293cbdda60SSimon J. Gerraty --install-prefix=*) INSTALL_PREFIX=`get_optarg "$1"`;; 2303cbdda60SSimon J. Gerraty -DWITH*) INSTALL_ARGS="$INSTALL_ARGS $1";; 2313955d011SMarcel Moolenaar -s|--src) srcdir="$2"; shift;; 2323955d011SMarcel Moolenaar -m|--mksrc) mksrc="$2"; shift;; 2333955d011SMarcel Moolenaar -o|--objdir) objdir="$2"; shift;; 2343955d011SMarcel Moolenaar -q) quiet=;; 2353955d011SMarcel Moolenaar -c) source_rc "$2"; shift;; 2363955d011SMarcel Moolenaar --*) CONFIGURE_ARGS="$CONFIGURE_ARGS $1";; 2373955d011SMarcel Moolenaar *=*) eval "$1"; export `expr "x$1" : "x\\(.[^=]*\\)=.*"`;; 2383955d011SMarcel Moolenaar *) break;; 2393955d011SMarcel Moolenaar esac 2403955d011SMarcel Moolenaar shift 2413955d011SMarcel Moolenaardone 2423955d011SMarcel Moolenaar 2433955d011SMarcel MoolenaarAddConfigure() { 2443955d011SMarcel Moolenaar case " $CONFIGURE_ARGS " in 2453955d011SMarcel Moolenaar *" $1"*) ;; 2463955d011SMarcel Moolenaar *) CONFIGURE_ARGS="$CONFIGURE_ARGS $1$2";; 2473955d011SMarcel Moolenaar esac 2483955d011SMarcel Moolenaar} 2493955d011SMarcel Moolenaar 2503955d011SMarcel MoolenaarGetDir() { 2513955d011SMarcel Moolenaar match="$1" 2523955d011SMarcel Moolenaar shift 2533955d011SMarcel Moolenaar fmatch="$1" 2543955d011SMarcel Moolenaar shift 2553955d011SMarcel Moolenaar for dir in $* 2563955d011SMarcel Moolenaar do 2573955d011SMarcel Moolenaar [ -d "$dir" ] || continue 2583955d011SMarcel Moolenaar case "/$dir/" in 2593955d011SMarcel Moolenaar *$match*) ;; 2603955d011SMarcel Moolenaar *) continue;; 2613955d011SMarcel Moolenaar esac 2623955d011SMarcel Moolenaar case "$fmatch" in 2633955d011SMarcel Moolenaar .) ;; 2643955d011SMarcel Moolenaar *) [ -s $dir/$fmatch ] || continue;; 2653955d011SMarcel Moolenaar esac 2663955d011SMarcel Moolenaar case "$dir/" in 2673955d011SMarcel Moolenaar *./*) cd "$dir" && 'pwd';; 2683955d011SMarcel Moolenaar /*) echo $dir;; 2693955d011SMarcel Moolenaar *) cd "$dir" && 'pwd';; 2703955d011SMarcel Moolenaar esac 2713955d011SMarcel Moolenaar break 2723955d011SMarcel Moolenaar done 2733955d011SMarcel Moolenaar} 2743955d011SMarcel Moolenaar 2753955d011SMarcel MoolenaarFindHereOrAbove() { 2763955d011SMarcel Moolenaar ( 2773955d011SMarcel Moolenaar _t=-s 2783955d011SMarcel Moolenaar while : 2793955d011SMarcel Moolenaar do 2803955d011SMarcel Moolenaar case "$1" in 2813955d011SMarcel Moolenaar -C) cd "$2"; shift; shift;; 2823955d011SMarcel Moolenaar -?) _t=$1; shift;; 2833955d011SMarcel Moolenaar *) break;; 2843955d011SMarcel Moolenaar esac 2853955d011SMarcel Moolenaar done 2863955d011SMarcel Moolenaar case "$1" in 2873955d011SMarcel Moolenaar /*) # we shouldn't be here 2883955d011SMarcel Moolenaar [ $_t "$1" ] && echo "$1" 2893955d011SMarcel Moolenaar return 2903955d011SMarcel Moolenaar ;; 2913955d011SMarcel Moolenaar .../*) want=`echo "$1" | sed 's,^.../*,,'`;; 2923955d011SMarcel Moolenaar *) want="$1";; 2933955d011SMarcel Moolenaar esac 2943955d011SMarcel Moolenaar here=`'pwd'` 2953955d011SMarcel Moolenaar while : 2963955d011SMarcel Moolenaar do 2973955d011SMarcel Moolenaar if [ $_t "./$want" ]; then 2983955d011SMarcel Moolenaar echo "$here/$want" 2993955d011SMarcel Moolenaar return 3003955d011SMarcel Moolenaar fi 3013955d011SMarcel Moolenaar cd .. 3023955d011SMarcel Moolenaar here=`'pwd'` 3033955d011SMarcel Moolenaar case "$here" in 3043955d011SMarcel Moolenaar /) return;; 3053955d011SMarcel Moolenaar esac 3063955d011SMarcel Moolenaar done 3073955d011SMarcel Moolenaar ) 3083955d011SMarcel Moolenaar} 3093955d011SMarcel Moolenaar 3103955d011SMarcel Moolenaar# is $1 missing from $2 (or PATH) ? 3113955d011SMarcel Moolenaarno_path() { 3123955d011SMarcel Moolenaar eval "__p=\$${2:-PATH}" 3133955d011SMarcel Moolenaar case ":$__p:" in *:"$1":*) return 1;; *) return 0;; esac 3143955d011SMarcel Moolenaar} 3153955d011SMarcel Moolenaar 3163955d011SMarcel Moolenaar# if $1 exists and is not in path, append it 3173955d011SMarcel Moolenaaradd_path () { 3183955d011SMarcel Moolenaar case "$1" in 3193955d011SMarcel Moolenaar -?) t=$1; shift;; 3203955d011SMarcel Moolenaar *) t=-d;; 3213955d011SMarcel Moolenaar esac 3223955d011SMarcel Moolenaar case "$2,$1" in 3233955d011SMarcel Moolenaar MAKESYSPATH,.../*) ;; 3243955d011SMarcel Moolenaar *) [ $t ${1:-.} ] || return;; 3253955d011SMarcel Moolenaar esac 3263955d011SMarcel Moolenaar no_path $* && eval ${2:-PATH}="$__p${__p:+:}$1" 3273955d011SMarcel Moolenaar} 3283955d011SMarcel Moolenaar 3293955d011SMarcel Moolenaar 3303955d011SMarcel Moolenaarsrcdir=`GetDir /bmake make-bootstrap.sh.in "$srcdir" "$2" "$Mydir" ./bmake* "$Mydir"/../bmake*` 3313955d011SMarcel Moolenaar[ -d "${srcdir:-/dev/null}" ] || Usage 3323955d011SMarcel Moolenaarcase "$mksrc" in 3333955d011SMarcel Moolenaarnone|-) # we don't want it 3343955d011SMarcel Moolenaar mksrc= 3353955d011SMarcel Moolenaar ;; 3363955d011SMarcel Moolenaar.../*) # find here or above 3373955d011SMarcel Moolenaar mksrc=`FindHereOrAbove -C "$Mydir" -s "$mksrc/sys.mk"` 3383955d011SMarcel Moolenaar # that found a file 3393955d011SMarcel Moolenaar mksrc=`dirname $mksrc` 3403955d011SMarcel Moolenaar ;; 3413955d011SMarcel Moolenaar*) # guess we want mksrc... 3423955d011SMarcel Moolenaar mksrc=`GetDir /mk sys.mk "$mksrc" "$3" ./mk* "$srcdir"/mk* "$srcdir"/../mk*` 3433955d011SMarcel Moolenaar [ -d "${mksrc:-/dev/null}" ] || Usage "Use '-m none' to build without mksrc" 3443955d011SMarcel Moolenaar ;; 3453955d011SMarcel Moolenaaresac 3463955d011SMarcel Moolenaar 3473955d011SMarcel Moolenaar# Ok, get to work... 3483cbdda60SSimon J. Gerratyobjdir="${objdir:-$OBJROOT$HOST_TARGET}" 3493955d011SMarcel Moolenaar[ -d "$objdir" ] || mkdir -p "$objdir" 3503955d011SMarcel Moolenaar[ -d "$objdir" ] || mkdir "$objdir" 3513955d011SMarcel Moolenaarcd "$objdir" || exit 1 3523955d011SMarcel Moolenaar# make it absolute 3533955d011SMarcel Moolenaarobjdir=`'pwd'` 3543955d011SMarcel Moolenaar 3553955d011SMarcel MoolenaarShareDir() { 3563955d011SMarcel Moolenaar case "/$1" in 3573955d011SMarcel Moolenaar /) [ -d /share ] || return;; 3583955d011SMarcel Moolenaar */$HOST_TARGET) 3593955d011SMarcel Moolenaar if [ -d "$1/../share" ]; then 3603955d011SMarcel Moolenaar echo `dirname "$1"`/share 3613955d011SMarcel Moolenaar return 3623955d011SMarcel Moolenaar fi 3633955d011SMarcel Moolenaar ;; 3643955d011SMarcel Moolenaar esac 3653955d011SMarcel Moolenaar echo $1/share 3663955d011SMarcel Moolenaar} 3673955d011SMarcel Moolenaar 3683955d011SMarcel Moolenaar# make it easy to force prefix to use $HOST_TARGET 3693955d011SMarcel Moolenaar: looking at "$prefix" 3703955d011SMarcel Moolenaarcase "$prefix" in 3713955d011SMarcel Moolenaar*/host?target) prefix=`echo "$prefix" | sed "s,host.target,${HOST_TARGET},"`;; 3723955d011SMarcel Moolenaaresac 3733955d011SMarcel Moolenaar 3743955d011SMarcel Moolenaarshare_dir="${share_dir:-`ShareDir $prefix`}" 3753955d011SMarcel Moolenaar 3763955d011SMarcel MoolenaarAddConfigure --prefix= "$prefix" 3773955d011SMarcel Moolenaarcase "$CONFIGURE_ARGS" in 3783955d011SMarcel Moolenaar*--with-*-sys-path*) ;; # skip 3793955d011SMarcel Moolenaar*) [ "$share_dir" ] && AddConfigure --with-default-sys-path= "$share_dir/mk";; 3803955d011SMarcel Moolenaaresac 3813955d011SMarcel Moolenaarif [ "$mksrc" ]; then 3823955d011SMarcel Moolenaar AddConfigure --with-mksrc= "$mksrc" 3833955d011SMarcel Moolenaar # not all cc's support this 3843955d011SMarcel Moolenaar CFLAGS_MF= CFLAGS_MD= 3853955d011SMarcel Moolenaar export CFLAGS_MF CFLAGS_MD 3863955d011SMarcel Moolenaarfi 3873955d011SMarcel Moolenaar 3883cbdda60SSimon J. Gerraty# this makes it easy to run the bmake we just built 3893cbdda60SSimon J. Gerraty# the :tA dance is needed because 'pwd' and even /bin/pwd 3903cbdda60SSimon J. Gerraty# may not give the same result as realpath(). 3913cbdda60SSimon J. GerratyBmake() { 3923955d011SMarcel Moolenaar ( 3933cbdda60SSimon J. Gerraty cd $Mydir && 3943cbdda60SSimon J. Gerraty MAKESYSPATH=$mksrc SRCTOP=$Mydir OBJTOP=$objdir \ 3953cbdda60SSimon J. Gerraty MAKEOBJDIR='${.CURDIR:S,${SRCTOP:tA},${OBJTOP:tA},}' \ 3963cbdda60SSimon J. Gerraty ${BMAKE:-$objdir/bmake} -f $Mydir/Makefile "$@" 3973955d011SMarcel Moolenaar ) 3983955d011SMarcel Moolenaar} 3993955d011SMarcel Moolenaar 4003cbdda60SSimon J. Gerraty# make sure test below uses the same diff that configure did 4013cbdda60SSimon J. GerratyTOOL_DIFF=`type diff | sed 's,[()],,g;s,^[^/][^/]*,,;q'` 4023cbdda60SSimon J. Gerratyexport TOOL_DIFF 4033cbdda60SSimon J. Gerraty 4043cbdda60SSimon J. Gerratyop_configure() { 4053cbdda60SSimon J. Gerraty $srcdir/configure $CONFIGURE_ARGS || exit 1 4063cbdda60SSimon J. Gerraty} 4073cbdda60SSimon J. Gerraty 4083cbdda60SSimon J. Gerratyop_build() { 4093cbdda60SSimon J. Gerraty [ -s make-bootstrap.sh ] || op_configure 4103cbdda60SSimon J. Gerraty chmod 755 make-bootstrap.sh || exit 1 4113cbdda60SSimon J. Gerraty ./make-bootstrap.sh || exit 1 4123cbdda60SSimon J. Gerraty case "$op" in 4133cbdda60SSimon J. Gerraty build) op_test;; 4143cbdda60SSimon J. Gerraty esac 4153cbdda60SSimon J. Gerraty} 4163cbdda60SSimon J. Gerraty 4173cbdda60SSimon J. Gerratyop_test() { 4183cbdda60SSimon J. Gerraty [ -x bmake ] || op_build 4193cbdda60SSimon J. Gerraty Bmake test || exit 1 4203cbdda60SSimon J. Gerraty} 4213cbdda60SSimon J. Gerraty 4223cbdda60SSimon J. Gerratyop_clean() { 4233cbdda60SSimon J. Gerraty if [ -x bmake ]; then 4243cbdda60SSimon J. Gerraty ln bmake bmake$$ 4253cbdda60SSimon J. Gerraty BMAKE=$objdir/bmake$$ Bmake clean 4263cbdda60SSimon J. Gerraty rm -f bmake$$ 4273cbdda60SSimon J. Gerraty elif [ $objdir != $srcdir ]; then 4283cbdda60SSimon J. Gerraty rm -rf * 4293cbdda60SSimon J. Gerraty fi 4303cbdda60SSimon J. Gerraty} 4313cbdda60SSimon J. Gerraty 4323cbdda60SSimon J. Gerratyop_install() { 4333cbdda60SSimon J. Gerraty op_test 4343cbdda60SSimon J. Gerraty case "$INSTALL_PREFIX,$INSTALL_BIN,$prefix" in 4353cbdda60SSimon J. Gerraty ,$HOST_TARGET/bin,*/$HOST_TARGET) 4363cbdda60SSimon J. Gerraty INSTALL_PREFIX=`dirname $prefix` 4373955d011SMarcel Moolenaar ;; 4383955d011SMarcel Moolenaar esac 4393cbdda60SSimon J. Gerraty INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix} 4403cbdda60SSimon J. Gerraty Bmake install prefix=$INSTALL_PREFIX BINDIR=$INSTALL_PREFIX/${INSTALL_BIN:-bin} ${INSTALL_DESTDIR:+DESTDIR=$INSTALL_DESTDIR} $INSTALL_ARGS || exit 1 4413cbdda60SSimon J. Gerraty} 4423955d011SMarcel Moolenaar 4433cbdda60SSimon J. Gerratyop_all() { 4443cbdda60SSimon J. Gerraty rm -f make-bootstrap.sh bmake *.o 4453cbdda60SSimon J. Gerraty if [ -n "$INSTALL_PREFIX" ]; then 4463cbdda60SSimon J. Gerraty op_install 4473cbdda60SSimon J. Gerraty else 4483cbdda60SSimon J. Gerraty op_test 4493cbdda60SSimon J. Gerraty MAKE_VERSION=`sed -n '/^MAKE_VERSION/ { s,.*= *,,;p; }' $srcdir/Makefile` 4503cbdda60SSimon J. Gerraty echo You can install by running: 4513cbdda60SSimon J. Gerraty echo 4523cbdda60SSimon J. Gerraty echo $0 $cmd_args op=install 4533cbdda60SSimon J. Gerraty echo 4543cbdda60SSimon J. Gerraty echo "Use --install-prefix=/something to install somewhere other than $prefix" 4553cbdda60SSimon J. Gerraty echo "Use --install-destdir=/somewhere to set DESTDIR during install" 4563cbdda60SSimon J. Gerraty echo "Use --install-host-target to use INSTALL_BIN=$HOST_TARGET/bin" 4573cbdda60SSimon J. Gerraty echo "Use -DWITH_PROG_VERSION to install as bmake-$MAKE_VERSION" 4583cbdda60SSimon J. Gerraty echo "Use -DWITHOUT_PROG_LINK to supress bmake -> bmake-$MAKE_VERSION symlink" 4593cbdda60SSimon J. Gerraty echo "Use -DWITHOUT_INSTALL_MK to skip installing files to $prefix/share/mk" 4603cbdda60SSimon J. Gerraty fi 4613cbdda60SSimon J. Gerraty} 4623cbdda60SSimon J. Gerraty 4633cbdda60SSimon J. Gerratyop_$op 4643cbdda60SSimon J. Gerratyexit 0 465