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*0dede8b0SSimon J. Gerraty# $Id: boot-strap,v 1.44 2014/01/08 14:49:10 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 1621748de26SSimon J. Gerraty# clear some things from the environment that we care about 1631748de26SSimon J. Gerratyunset MAKEOBJDIR MAKEOBJDIRPREFIX 1641748de26SSimon 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=*) 219*0dede8b0SSimon J. Gerraty CONFIGURE_ARGS="$1";; 2203955d011SMarcel Moolenaar --with-default-sys-path) 221*0dede8b0SSimon J. Gerraty CONFIGURE_ARGS="$1 $2";; 2223cbdda60SSimon J. Gerraty --install) INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix};; 2233cbdda60SSimon J. Gerraty --install-host-target) 2243cbdda60SSimon J. Gerraty INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix} 2253cbdda60SSimon J. Gerraty INSTALL_BIN=$HOST_TARGET/bin;; 2263cbdda60SSimon J. Gerraty --install-destdir=*) INSTALL_DESTDIR=`get_optarg "$1"`;; 2273cbdda60SSimon J. Gerraty --install-prefix=*) INSTALL_PREFIX=`get_optarg "$1"`;; 2283cbdda60SSimon J. Gerraty -DWITH*) INSTALL_ARGS="$INSTALL_ARGS $1";; 2293955d011SMarcel Moolenaar -s|--src) srcdir="$2"; shift;; 2303955d011SMarcel Moolenaar -m|--mksrc) mksrc="$2"; shift;; 2313955d011SMarcel Moolenaar -o|--objdir) objdir="$2"; shift;; 2323955d011SMarcel Moolenaar -q) quiet=;; 2333955d011SMarcel Moolenaar -c) source_rc "$2"; shift;; 2343955d011SMarcel Moolenaar --*) CONFIGURE_ARGS="$CONFIGURE_ARGS $1";; 2353955d011SMarcel Moolenaar *=*) eval "$1"; export `expr "x$1" : "x\\(.[^=]*\\)=.*"`;; 2363955d011SMarcel Moolenaar *) break;; 2373955d011SMarcel Moolenaar esac 2383955d011SMarcel Moolenaar shift 2393955d011SMarcel Moolenaardone 2403955d011SMarcel Moolenaar 2413955d011SMarcel MoolenaarAddConfigure() { 2423955d011SMarcel Moolenaar case " $CONFIGURE_ARGS " in 2433955d011SMarcel Moolenaar *" $1"*) ;; 2443955d011SMarcel Moolenaar *) CONFIGURE_ARGS="$CONFIGURE_ARGS $1$2";; 2453955d011SMarcel Moolenaar esac 2463955d011SMarcel Moolenaar} 2473955d011SMarcel Moolenaar 2483955d011SMarcel MoolenaarGetDir() { 2493955d011SMarcel Moolenaar match="$1" 2503955d011SMarcel Moolenaar shift 2513955d011SMarcel Moolenaar fmatch="$1" 2523955d011SMarcel Moolenaar shift 2533955d011SMarcel Moolenaar for dir in $* 2543955d011SMarcel Moolenaar do 2553955d011SMarcel Moolenaar [ -d "$dir" ] || continue 2563955d011SMarcel Moolenaar case "/$dir/" in 2573955d011SMarcel Moolenaar *$match*) ;; 2583955d011SMarcel Moolenaar *) continue;; 2593955d011SMarcel Moolenaar esac 2603955d011SMarcel Moolenaar case "$fmatch" in 2613955d011SMarcel Moolenaar .) ;; 2623955d011SMarcel Moolenaar *) [ -s $dir/$fmatch ] || continue;; 2633955d011SMarcel Moolenaar esac 2643955d011SMarcel Moolenaar case "$dir/" in 2653955d011SMarcel Moolenaar *./*) cd "$dir" && 'pwd';; 2663955d011SMarcel Moolenaar /*) echo $dir;; 2673955d011SMarcel Moolenaar *) cd "$dir" && 'pwd';; 2683955d011SMarcel Moolenaar esac 2693955d011SMarcel Moolenaar break 2703955d011SMarcel Moolenaar done 2713955d011SMarcel Moolenaar} 2723955d011SMarcel Moolenaar 2733955d011SMarcel MoolenaarFindHereOrAbove() { 2743955d011SMarcel Moolenaar ( 2753955d011SMarcel Moolenaar _t=-s 2763955d011SMarcel Moolenaar while : 2773955d011SMarcel Moolenaar do 2783955d011SMarcel Moolenaar case "$1" in 2793955d011SMarcel Moolenaar -C) cd "$2"; shift; shift;; 2803955d011SMarcel Moolenaar -?) _t=$1; shift;; 2813955d011SMarcel Moolenaar *) break;; 2823955d011SMarcel Moolenaar esac 2833955d011SMarcel Moolenaar done 2843955d011SMarcel Moolenaar case "$1" in 2853955d011SMarcel Moolenaar /*) # we shouldn't be here 2863955d011SMarcel Moolenaar [ $_t "$1" ] && echo "$1" 2873955d011SMarcel Moolenaar return 2883955d011SMarcel Moolenaar ;; 2893955d011SMarcel Moolenaar .../*) want=`echo "$1" | sed 's,^.../*,,'`;; 2903955d011SMarcel Moolenaar *) want="$1";; 2913955d011SMarcel Moolenaar esac 2923955d011SMarcel Moolenaar here=`'pwd'` 2933955d011SMarcel Moolenaar while : 2943955d011SMarcel Moolenaar do 2953955d011SMarcel Moolenaar if [ $_t "./$want" ]; then 2963955d011SMarcel Moolenaar echo "$here/$want" 2973955d011SMarcel Moolenaar return 2983955d011SMarcel Moolenaar fi 2993955d011SMarcel Moolenaar cd .. 3003955d011SMarcel Moolenaar here=`'pwd'` 3013955d011SMarcel Moolenaar case "$here" in 3023955d011SMarcel Moolenaar /) return;; 3033955d011SMarcel Moolenaar esac 3043955d011SMarcel Moolenaar done 3053955d011SMarcel Moolenaar ) 3063955d011SMarcel Moolenaar} 3073955d011SMarcel Moolenaar 3083955d011SMarcel Moolenaar# is $1 missing from $2 (or PATH) ? 3093955d011SMarcel Moolenaarno_path() { 3103955d011SMarcel Moolenaar eval "__p=\$${2:-PATH}" 3113955d011SMarcel Moolenaar case ":$__p:" in *:"$1":*) return 1;; *) return 0;; esac 3123955d011SMarcel Moolenaar} 3133955d011SMarcel Moolenaar 3143955d011SMarcel Moolenaar# if $1 exists and is not in path, append it 3153955d011SMarcel Moolenaaradd_path () { 3163955d011SMarcel Moolenaar case "$1" in 3173955d011SMarcel Moolenaar -?) t=$1; shift;; 3183955d011SMarcel Moolenaar *) t=-d;; 3193955d011SMarcel Moolenaar esac 3203955d011SMarcel Moolenaar case "$2,$1" in 3213955d011SMarcel Moolenaar MAKESYSPATH,.../*) ;; 3223955d011SMarcel Moolenaar *) [ $t ${1:-.} ] || return;; 3233955d011SMarcel Moolenaar esac 3243955d011SMarcel Moolenaar no_path $* && eval ${2:-PATH}="$__p${__p:+:}$1" 3253955d011SMarcel Moolenaar} 3263955d011SMarcel Moolenaar 3273955d011SMarcel Moolenaar 3283955d011SMarcel Moolenaarsrcdir=`GetDir /bmake make-bootstrap.sh.in "$srcdir" "$2" "$Mydir" ./bmake* "$Mydir"/../bmake*` 3293955d011SMarcel Moolenaar[ -d "${srcdir:-/dev/null}" ] || Usage 3303955d011SMarcel Moolenaarcase "$mksrc" in 331*0dede8b0SSimon J. Gerratynone|-) # we ignore this now 332*0dede8b0SSimon J. Gerraty mksrc=$Mydir/mk 3333955d011SMarcel Moolenaar ;; 3343955d011SMarcel Moolenaar.../*) # find here or above 3353955d011SMarcel Moolenaar mksrc=`FindHereOrAbove -C "$Mydir" -s "$mksrc/sys.mk"` 3363955d011SMarcel Moolenaar # that found a file 3373955d011SMarcel Moolenaar mksrc=`dirname $mksrc` 3383955d011SMarcel Moolenaar ;; 3393955d011SMarcel Moolenaar*) # guess we want mksrc... 3403955d011SMarcel Moolenaar mksrc=`GetDir /mk sys.mk "$mksrc" "$3" ./mk* "$srcdir"/mk* "$srcdir"/../mk*` 3413955d011SMarcel Moolenaar [ -d "${mksrc:-/dev/null}" ] || Usage "Use '-m none' to build without mksrc" 3423955d011SMarcel Moolenaar ;; 3433955d011SMarcel Moolenaaresac 3443955d011SMarcel Moolenaar 3453955d011SMarcel Moolenaar# Ok, get to work... 3463cbdda60SSimon J. Gerratyobjdir="${objdir:-$OBJROOT$HOST_TARGET}" 3473955d011SMarcel Moolenaar[ -d "$objdir" ] || mkdir -p "$objdir" 3483955d011SMarcel Moolenaar[ -d "$objdir" ] || mkdir "$objdir" 3493955d011SMarcel Moolenaarcd "$objdir" || exit 1 3503955d011SMarcel Moolenaar# make it absolute 3513955d011SMarcel Moolenaarobjdir=`'pwd'` 3523955d011SMarcel Moolenaar 3533955d011SMarcel MoolenaarShareDir() { 3543955d011SMarcel Moolenaar case "/$1" in 3553955d011SMarcel Moolenaar /) [ -d /share ] || return;; 3563955d011SMarcel Moolenaar */$HOST_TARGET) 3573955d011SMarcel Moolenaar if [ -d "$1/../share" ]; then 3583955d011SMarcel Moolenaar echo `dirname "$1"`/share 3593955d011SMarcel Moolenaar return 3603955d011SMarcel Moolenaar fi 3613955d011SMarcel Moolenaar ;; 3623955d011SMarcel Moolenaar esac 3633955d011SMarcel Moolenaar echo $1/share 3643955d011SMarcel Moolenaar} 3653955d011SMarcel Moolenaar 3663955d011SMarcel Moolenaar# make it easy to force prefix to use $HOST_TARGET 3673955d011SMarcel Moolenaar: looking at "$prefix" 3683955d011SMarcel Moolenaarcase "$prefix" in 3693955d011SMarcel Moolenaar*/host?target) prefix=`echo "$prefix" | sed "s,host.target,${HOST_TARGET},"`;; 3703955d011SMarcel Moolenaaresac 3713955d011SMarcel Moolenaar 3723955d011SMarcel Moolenaarshare_dir="${share_dir:-`ShareDir $prefix`}" 3733955d011SMarcel Moolenaar 3743955d011SMarcel MoolenaarAddConfigure --prefix= "$prefix" 3753955d011SMarcel Moolenaarcase "$CONFIGURE_ARGS" in 3763955d011SMarcel Moolenaar*--with-*-sys-path*) ;; # skip 3773955d011SMarcel Moolenaar*) [ "$share_dir" ] && AddConfigure --with-default-sys-path= "$share_dir/mk";; 3783955d011SMarcel Moolenaaresac 3793955d011SMarcel Moolenaarif [ "$mksrc" ]; then 3803955d011SMarcel Moolenaar AddConfigure --with-mksrc= "$mksrc" 3813955d011SMarcel Moolenaar # not all cc's support this 3823955d011SMarcel Moolenaar CFLAGS_MF= CFLAGS_MD= 3833955d011SMarcel Moolenaar export CFLAGS_MF CFLAGS_MD 3843955d011SMarcel Moolenaarfi 3853955d011SMarcel Moolenaar 3863cbdda60SSimon J. Gerraty# this makes it easy to run the bmake we just built 3873cbdda60SSimon J. Gerraty# the :tA dance is needed because 'pwd' and even /bin/pwd 3883cbdda60SSimon J. Gerraty# may not give the same result as realpath(). 3893cbdda60SSimon J. GerratyBmake() { 3903955d011SMarcel Moolenaar ( 3913cbdda60SSimon J. Gerraty cd $Mydir && 3923cbdda60SSimon J. Gerraty MAKESYSPATH=$mksrc SRCTOP=$Mydir OBJTOP=$objdir \ 3933cbdda60SSimon J. Gerraty MAKEOBJDIR='${.CURDIR:S,${SRCTOP:tA},${OBJTOP:tA},}' \ 3943cbdda60SSimon J. Gerraty ${BMAKE:-$objdir/bmake} -f $Mydir/Makefile "$@" 3953955d011SMarcel Moolenaar ) 3963955d011SMarcel Moolenaar} 3973955d011SMarcel Moolenaar 3983cbdda60SSimon J. Gerraty# make sure test below uses the same diff that configure did 3993cbdda60SSimon J. GerratyTOOL_DIFF=`type diff | sed 's,[()],,g;s,^[^/][^/]*,,;q'` 4003cbdda60SSimon J. Gerratyexport TOOL_DIFF 4013cbdda60SSimon J. Gerraty 4023cbdda60SSimon J. Gerratyop_configure() { 4033cbdda60SSimon J. Gerraty $srcdir/configure $CONFIGURE_ARGS || exit 1 4043cbdda60SSimon J. Gerraty} 4053cbdda60SSimon J. Gerraty 4063cbdda60SSimon J. Gerratyop_build() { 4073cbdda60SSimon J. Gerraty [ -s make-bootstrap.sh ] || op_configure 4083cbdda60SSimon J. Gerraty chmod 755 make-bootstrap.sh || exit 1 4093cbdda60SSimon J. Gerraty ./make-bootstrap.sh || exit 1 4103cbdda60SSimon J. Gerraty case "$op" in 4113cbdda60SSimon J. Gerraty build) op_test;; 4123cbdda60SSimon J. Gerraty esac 4133cbdda60SSimon J. Gerraty} 4143cbdda60SSimon J. Gerraty 4153cbdda60SSimon J. Gerratyop_test() { 4163cbdda60SSimon J. Gerraty [ -x bmake ] || op_build 4173cbdda60SSimon J. Gerraty Bmake test || exit 1 4183cbdda60SSimon J. Gerraty} 4193cbdda60SSimon J. Gerraty 4203cbdda60SSimon J. Gerratyop_clean() { 4213cbdda60SSimon J. Gerraty if [ -x bmake ]; then 4223cbdda60SSimon J. Gerraty ln bmake bmake$$ 4233cbdda60SSimon J. Gerraty BMAKE=$objdir/bmake$$ Bmake clean 4243cbdda60SSimon J. Gerraty rm -f bmake$$ 4253cbdda60SSimon J. Gerraty elif [ $objdir != $srcdir ]; then 4263cbdda60SSimon J. Gerraty rm -rf * 4273cbdda60SSimon J. Gerraty fi 4283cbdda60SSimon J. Gerraty} 4293cbdda60SSimon J. Gerraty 4303cbdda60SSimon J. Gerratyop_install() { 4313cbdda60SSimon J. Gerraty op_test 4323cbdda60SSimon J. Gerraty case "$INSTALL_PREFIX,$INSTALL_BIN,$prefix" in 4333cbdda60SSimon J. Gerraty ,$HOST_TARGET/bin,*/$HOST_TARGET) 4343cbdda60SSimon J. Gerraty INSTALL_PREFIX=`dirname $prefix` 4353955d011SMarcel Moolenaar ;; 4363955d011SMarcel Moolenaar esac 4373cbdda60SSimon J. Gerraty INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix} 4383cbdda60SSimon J. Gerraty Bmake install prefix=$INSTALL_PREFIX BINDIR=$INSTALL_PREFIX/${INSTALL_BIN:-bin} ${INSTALL_DESTDIR:+DESTDIR=$INSTALL_DESTDIR} $INSTALL_ARGS || exit 1 4393cbdda60SSimon J. Gerraty} 4403955d011SMarcel Moolenaar 4413cbdda60SSimon J. Gerratyop_all() { 4423cbdda60SSimon J. Gerraty rm -f make-bootstrap.sh bmake *.o 4433cbdda60SSimon J. Gerraty if [ -n "$INSTALL_PREFIX" ]; then 4443cbdda60SSimon J. Gerraty op_install 4453cbdda60SSimon J. Gerraty else 4463cbdda60SSimon J. Gerraty op_test 4473cbdda60SSimon J. Gerraty MAKE_VERSION=`sed -n '/^MAKE_VERSION/ { s,.*= *,,;p; }' $srcdir/Makefile` 4483cbdda60SSimon J. Gerraty echo You can install by running: 4493cbdda60SSimon J. Gerraty echo 4503cbdda60SSimon J. Gerraty echo $0 $cmd_args op=install 4513cbdda60SSimon J. Gerraty echo 4523cbdda60SSimon J. Gerraty echo "Use --install-prefix=/something to install somewhere other than $prefix" 4533cbdda60SSimon J. Gerraty echo "Use --install-destdir=/somewhere to set DESTDIR during install" 4543cbdda60SSimon J. Gerraty echo "Use --install-host-target to use INSTALL_BIN=$HOST_TARGET/bin" 4553cbdda60SSimon J. Gerraty echo "Use -DWITH_PROG_VERSION to install as bmake-$MAKE_VERSION" 4563cbdda60SSimon J. Gerraty echo "Use -DWITHOUT_PROG_LINK to supress bmake -> bmake-$MAKE_VERSION symlink" 4573cbdda60SSimon J. Gerraty echo "Use -DWITHOUT_INSTALL_MK to skip installing files to $prefix/share/mk" 4583cbdda60SSimon J. Gerraty fi 4593cbdda60SSimon J. Gerraty} 4603cbdda60SSimon J. Gerraty 4613cbdda60SSimon J. Gerratyop_$op 4623cbdda60SSimon J. Gerratyexit 0 463