13955d011SMarcel Moolenaar: 23955d011SMarcel Moolenaar# NAME: 33955d011SMarcel Moolenaar# boot-strap 43955d011SMarcel Moolenaar# 53955d011SMarcel Moolenaar# SYNOPSIS: 6*3cbdda60SSimon J. Gerraty# boot-strap ["options"] 7*3cbdda60SSimon J. Gerraty# boot-strap --prefix=/opt --install 8*3cbdda60SSimon J. Gerraty# boot-strap --prefix=$HOME --install-host-target -DWITH_PROG_VERSION 9*3cbdda60SSimon J. Gerraty# boot-strap ["options"] op=build 10*3cbdda60SSimon 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 14*3cbdda60SSimon J. Gerraty# each host-target in a different subdir to keep the src clean. 15*3cbdda60SSimon J. Gerraty# There is no requirement for an existing make(1). 16*3cbdda60SSimon J. Gerraty# 17*3cbdda60SSimon J. Gerraty# On successful completion if no '--install' flag is given, 18*3cbdda60SSimon J. Gerraty# it echos a command to do installation. 19*3cbdda60SSimon J. Gerraty# 20*3cbdda60SSimon J. Gerraty# The variable "op" defaults to 'all', and is affected by 21*3cbdda60SSimon J. Gerraty# '--install' flag as above. 22*3cbdda60SSimon J. Gerraty# Other values include: 23*3cbdda60SSimon J. Gerraty# 24*3cbdda60SSimon J. Gerraty# configure 25*3cbdda60SSimon J. Gerraty# Just run 'configure' 26*3cbdda60SSimon J. Gerraty# 27*3cbdda60SSimon J. Gerraty# build 28*3cbdda60SSimon J. Gerraty# If 'configure' has not been done, do it, then 29*3cbdda60SSimon J. Gerraty# run the build script, and finally 'test'. 30*3cbdda60SSimon J. Gerraty# 31*3cbdda60SSimon J. Gerraty# install 32*3cbdda60SSimon J. Gerraty# If 'build' has not been done, do it, 'test' then 33*3cbdda60SSimon J. Gerraty# install. 34*3cbdda60SSimon J. Gerraty# 35*3cbdda60SSimon J. Gerraty# clean 36*3cbdda60SSimon J. Gerraty# attempt to clean up 37*3cbdda60SSimon J. Gerraty# 38*3cbdda60SSimon J. Gerraty# test 39*3cbdda60SSimon J. Gerraty# run the unit-tests. Done automatically after 'build' 40*3cbdda60SSimon J. Gerraty# and before 'install'. 41*3cbdda60SSimon J. Gerraty# 42*3cbdda60SSimon J. Gerraty# The above are leveraged by a trivial makefile for the benefit 43*3cbdda60SSimon J. Gerraty# of those that have './configure; make; make install' baked 44*3cbdda60SSimon 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 51*3cbdda60SSimon 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. 60*3cbdda60SSimon J. Gerraty# Default is $Mydir/mk 61*3cbdda60SSimon J. Gerraty# 62*3cbdda60SSimon J. Gerraty# --install 63*3cbdda60SSimon J. Gerraty# If build and test work, run bmake install. 64*3cbdda60SSimon J. Gerraty# BINDIR=$prefix/bin 65*3cbdda60SSimon J. Gerraty# SHAREDIR=$prefix/share 66*3cbdda60SSimon J. Gerraty# 67*3cbdda60SSimon J. Gerraty# --install-host-target 68*3cbdda60SSimon J. Gerraty# As for '--install' but BINDIR=$prefix/$HOST_TARGET/bin 69*3cbdda60SSimon J. Gerraty# This is useful when $prefix/ is shared by multiple 70*3cbdda60SSimon J. Gerraty# machines. 71*3cbdda60SSimon J. Gerraty# 72*3cbdda60SSimon J. Gerraty# Flags relevant when installing: 73*3cbdda60SSimon J. Gerraty# 74*3cbdda60SSimon J. Gerraty# -DWITHOUT_INSTALL_MK 75*3cbdda60SSimon J. Gerraty# Skip installing mk files. 76*3cbdda60SSimon J. Gerraty# By default they will be installed to $prefix/share/mk 77*3cbdda60SSimon J. Gerraty# 78*3cbdda60SSimon J. Gerraty# -DWITH_PROG_VERSION 79*3cbdda60SSimon J. Gerraty# Install 'bmake' as 'bmake-$MAKE_VERSION' 80*3cbdda60SSimon J. Gerraty# A symlink will be made as 'bmake' unless 81*3cbdda60SSimon 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*3cbdda60SSimon J. Gerraty# $Id: boot-strap,v 1.42 2013/01/25 20:20:33 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 139*3cbdda60SSimon 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 160*3cbdda60SSimon J. Gerratycmd_args="$@" 161*3cbdda60SSimon J. Gerraty 162*3cbdda60SSimon J. Gerraty# --install[-host-target] will set this 163*3cbdda60SSimon J. GerratyINSTALL_PREFIX= 164*3cbdda60SSimon J. Gerraty# other things we pass to install step 165*3cbdda60SSimon J. GerratyINSTALL_ARGS= 1663955d011SMarcel MoolenaarCONFIGURE_ARGS= 1673955d011SMarcel MoolenaarMAKESYSPATH= 1683955d011SMarcel Moolenaar# pick a useful default prefix (for me at least ;-) 1693955d011SMarcel Moolenaarfor prefix in /opt/$HOST_TARGET "$HOME/$HOST_TARGET" /usr/pkg /usr/local "" 1703955d011SMarcel Moolenaardo 171*3cbdda60SSimon J. Gerraty [ -d "${prefix:-.}" ] || continue 172*3cbdda60SSimon J. Gerraty case "$prefix" in 173*3cbdda60SSimon J. Gerraty */$HOST_TARGET) 174*3cbdda60SSimon J. Gerraty p=`dirname $prefix` 175*3cbdda60SSimon J. Gerraty if [ -d $p/share ]; then 176*3cbdda60SSimon J. Gerraty INSTALL_BIN=$HOST_TARGET/bin 177*3cbdda60SSimon J. Gerraty prefix=$p 178*3cbdda60SSimon J. Gerraty fi 179*3cbdda60SSimon J. Gerraty ;; 180*3cbdda60SSimon J. Gerraty esac 181*3cbdda60SSimon J. Gerraty echo "NOTE: default prefix=$prefix ${INSTALL_BIN:+INSTALL_BIN=$INSTALL_BIN}" 182*3cbdda60SSimon J. Gerraty break 1833955d011SMarcel Moolenaardone 184*3cbdda60SSimon J. Gerratysrcdir=$Mydir 185*3cbdda60SSimon J. Gerratymksrc=$Mydir/mk 1863955d011SMarcel Moolenaarobjdir= 1873955d011SMarcel Moolenaarquiet=: 1883955d011SMarcel Moolenaar 189*3cbdda60SSimon J. Gerraty${SKIP_RC:+:} source_rc .bmake-boot-strap.rc . "$Mydir/.." "$HOME" 1903955d011SMarcel Moolenaar 1913955d011SMarcel Moolenaarget_optarg() { 1923955d011SMarcel Moolenaar expr "x$1" : "x[^=]*=\\(.*\\)" 1933955d011SMarcel Moolenaar} 1943955d011SMarcel Moolenaar 195*3cbdda60SSimon J. Gerratyhere=`'pwd'` 196*3cbdda60SSimon J. Gerratyif [ $here = $Mydir ]; then 197*3cbdda60SSimon J. Gerraty # avoid polution 198*3cbdda60SSimon J. Gerraty OBJROOT=../ 199*3cbdda60SSimon J. Gerratyfi 200*3cbdda60SSimon J. Gerraty 201*3cbdda60SSimon J. Gerratyop=all 202*3cbdda60SSimon J. GerratyBMAKE= 203*3cbdda60SSimon J. Gerraty 2043955d011SMarcel Moolenaarwhile : 2053955d011SMarcel Moolenaardo 2063955d011SMarcel Moolenaar case "$1" in 2073955d011SMarcel Moolenaar --) shift; break;; 208*3cbdda60SSimon J. Gerraty --help) sed -n -e "1d;/RCSid/,\$d" -e '/^#\.[a-z]/d' -e '/^#/s,^# *,,p' $0; exit 0;; 2093955d011SMarcel Moolenaar --prefix) prefix="$2"; shift;; 2103955d011SMarcel Moolenaar --prefix=*) prefix=`get_optarg "$1"`;; 2113955d011SMarcel Moolenaar --src=*) srcdir=`get_optarg "$1"`;; 2123955d011SMarcel Moolenaar --with-mksrc=*|--mksrc=*) mksrc=`get_optarg "$1"`;; 2133955d011SMarcel Moolenaar --share=*) share_dir=`get_optarg "$1"`;; 2143955d011SMarcel Moolenaar --share) share_dir="$2"; shift;; 2153955d011SMarcel Moolenaar --with-default-sys-path=*) 2163955d011SMarcel Moolenaar CONFIGURE_ARGS="$1" 2173955d011SMarcel Moolenaar MAKESYSPATH=`get_optarg "$1"`;; 2183955d011SMarcel Moolenaar --with-default-sys-path) 2193955d011SMarcel Moolenaar CONFIGURE_ARGS="$1 $2" 2203955d011SMarcel Moolenaar MAKESYSPATH="$2"; shift;; 221*3cbdda60SSimon J. Gerraty --install) INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix};; 222*3cbdda60SSimon J. Gerraty --install-host-target) 223*3cbdda60SSimon J. Gerraty INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix} 224*3cbdda60SSimon J. Gerraty INSTALL_BIN=$HOST_TARGET/bin;; 225*3cbdda60SSimon J. Gerraty --install-destdir=*) INSTALL_DESTDIR=`get_optarg "$1"`;; 226*3cbdda60SSimon J. Gerraty --install-prefix=*) INSTALL_PREFIX=`get_optarg "$1"`;; 227*3cbdda60SSimon J. Gerraty -DWITH*) INSTALL_ARGS="$INSTALL_ARGS $1";; 2283955d011SMarcel Moolenaar -s|--src) srcdir="$2"; shift;; 2293955d011SMarcel Moolenaar -m|--mksrc) mksrc="$2"; shift;; 2303955d011SMarcel Moolenaar -o|--objdir) objdir="$2"; shift;; 2313955d011SMarcel Moolenaar -q) quiet=;; 2323955d011SMarcel Moolenaar -c) source_rc "$2"; shift;; 2333955d011SMarcel Moolenaar --*) CONFIGURE_ARGS="$CONFIGURE_ARGS $1";; 2343955d011SMarcel Moolenaar *=*) eval "$1"; export `expr "x$1" : "x\\(.[^=]*\\)=.*"`;; 2353955d011SMarcel Moolenaar *) break;; 2363955d011SMarcel Moolenaar esac 2373955d011SMarcel Moolenaar shift 2383955d011SMarcel Moolenaardone 2393955d011SMarcel Moolenaar 2403955d011SMarcel MoolenaarAddConfigure() { 2413955d011SMarcel Moolenaar case " $CONFIGURE_ARGS " in 2423955d011SMarcel Moolenaar *" $1"*) ;; 2433955d011SMarcel Moolenaar *) CONFIGURE_ARGS="$CONFIGURE_ARGS $1$2";; 2443955d011SMarcel Moolenaar esac 2453955d011SMarcel Moolenaar} 2463955d011SMarcel Moolenaar 2473955d011SMarcel MoolenaarGetDir() { 2483955d011SMarcel Moolenaar match="$1" 2493955d011SMarcel Moolenaar shift 2503955d011SMarcel Moolenaar fmatch="$1" 2513955d011SMarcel Moolenaar shift 2523955d011SMarcel Moolenaar for dir in $* 2533955d011SMarcel Moolenaar do 2543955d011SMarcel Moolenaar [ -d "$dir" ] || continue 2553955d011SMarcel Moolenaar case "/$dir/" in 2563955d011SMarcel Moolenaar *$match*) ;; 2573955d011SMarcel Moolenaar *) continue;; 2583955d011SMarcel Moolenaar esac 2593955d011SMarcel Moolenaar case "$fmatch" in 2603955d011SMarcel Moolenaar .) ;; 2613955d011SMarcel Moolenaar *) [ -s $dir/$fmatch ] || continue;; 2623955d011SMarcel Moolenaar esac 2633955d011SMarcel Moolenaar case "$dir/" in 2643955d011SMarcel Moolenaar *./*) cd "$dir" && 'pwd';; 2653955d011SMarcel Moolenaar /*) echo $dir;; 2663955d011SMarcel Moolenaar *) cd "$dir" && 'pwd';; 2673955d011SMarcel Moolenaar esac 2683955d011SMarcel Moolenaar break 2693955d011SMarcel Moolenaar done 2703955d011SMarcel Moolenaar} 2713955d011SMarcel Moolenaar 2723955d011SMarcel MoolenaarFindHereOrAbove() { 2733955d011SMarcel Moolenaar ( 2743955d011SMarcel Moolenaar _t=-s 2753955d011SMarcel Moolenaar while : 2763955d011SMarcel Moolenaar do 2773955d011SMarcel Moolenaar case "$1" in 2783955d011SMarcel Moolenaar -C) cd "$2"; shift; shift;; 2793955d011SMarcel Moolenaar -?) _t=$1; shift;; 2803955d011SMarcel Moolenaar *) break;; 2813955d011SMarcel Moolenaar esac 2823955d011SMarcel Moolenaar done 2833955d011SMarcel Moolenaar case "$1" in 2843955d011SMarcel Moolenaar /*) # we shouldn't be here 2853955d011SMarcel Moolenaar [ $_t "$1" ] && echo "$1" 2863955d011SMarcel Moolenaar return 2873955d011SMarcel Moolenaar ;; 2883955d011SMarcel Moolenaar .../*) want=`echo "$1" | sed 's,^.../*,,'`;; 2893955d011SMarcel Moolenaar *) want="$1";; 2903955d011SMarcel Moolenaar esac 2913955d011SMarcel Moolenaar here=`'pwd'` 2923955d011SMarcel Moolenaar while : 2933955d011SMarcel Moolenaar do 2943955d011SMarcel Moolenaar if [ $_t "./$want" ]; then 2953955d011SMarcel Moolenaar echo "$here/$want" 2963955d011SMarcel Moolenaar return 2973955d011SMarcel Moolenaar fi 2983955d011SMarcel Moolenaar cd .. 2993955d011SMarcel Moolenaar here=`'pwd'` 3003955d011SMarcel Moolenaar case "$here" in 3013955d011SMarcel Moolenaar /) return;; 3023955d011SMarcel Moolenaar esac 3033955d011SMarcel Moolenaar done 3043955d011SMarcel Moolenaar ) 3053955d011SMarcel Moolenaar} 3063955d011SMarcel Moolenaar 3073955d011SMarcel Moolenaar# is $1 missing from $2 (or PATH) ? 3083955d011SMarcel Moolenaarno_path() { 3093955d011SMarcel Moolenaar eval "__p=\$${2:-PATH}" 3103955d011SMarcel Moolenaar case ":$__p:" in *:"$1":*) return 1;; *) return 0;; esac 3113955d011SMarcel Moolenaar} 3123955d011SMarcel Moolenaar 3133955d011SMarcel Moolenaar# if $1 exists and is not in path, append it 3143955d011SMarcel Moolenaaradd_path () { 3153955d011SMarcel Moolenaar case "$1" in 3163955d011SMarcel Moolenaar -?) t=$1; shift;; 3173955d011SMarcel Moolenaar *) t=-d;; 3183955d011SMarcel Moolenaar esac 3193955d011SMarcel Moolenaar case "$2,$1" in 3203955d011SMarcel Moolenaar MAKESYSPATH,.../*) ;; 3213955d011SMarcel Moolenaar *) [ $t ${1:-.} ] || return;; 3223955d011SMarcel Moolenaar esac 3233955d011SMarcel Moolenaar no_path $* && eval ${2:-PATH}="$__p${__p:+:}$1" 3243955d011SMarcel Moolenaar} 3253955d011SMarcel Moolenaar 3263955d011SMarcel Moolenaar 3273955d011SMarcel Moolenaarsrcdir=`GetDir /bmake make-bootstrap.sh.in "$srcdir" "$2" "$Mydir" ./bmake* "$Mydir"/../bmake*` 3283955d011SMarcel Moolenaar[ -d "${srcdir:-/dev/null}" ] || Usage 3293955d011SMarcel Moolenaarcase "$mksrc" in 3303955d011SMarcel Moolenaarnone|-) # we don't want it 3313955d011SMarcel Moolenaar mksrc= 3323955d011SMarcel Moolenaar ;; 3333955d011SMarcel Moolenaar.../*) # find here or above 3343955d011SMarcel Moolenaar mksrc=`FindHereOrAbove -C "$Mydir" -s "$mksrc/sys.mk"` 3353955d011SMarcel Moolenaar # that found a file 3363955d011SMarcel Moolenaar mksrc=`dirname $mksrc` 3373955d011SMarcel Moolenaar ;; 3383955d011SMarcel Moolenaar*) # guess we want mksrc... 3393955d011SMarcel Moolenaar mksrc=`GetDir /mk sys.mk "$mksrc" "$3" ./mk* "$srcdir"/mk* "$srcdir"/../mk*` 3403955d011SMarcel Moolenaar [ -d "${mksrc:-/dev/null}" ] || Usage "Use '-m none' to build without mksrc" 3413955d011SMarcel Moolenaar ;; 3423955d011SMarcel Moolenaaresac 3433955d011SMarcel Moolenaar 3443955d011SMarcel Moolenaar# Ok, get to work... 345*3cbdda60SSimon J. Gerratyobjdir="${objdir:-$OBJROOT$HOST_TARGET}" 3463955d011SMarcel Moolenaar[ -d "$objdir" ] || mkdir -p "$objdir" 3473955d011SMarcel Moolenaar[ -d "$objdir" ] || mkdir "$objdir" 3483955d011SMarcel Moolenaarcd "$objdir" || exit 1 3493955d011SMarcel Moolenaar# make it absolute 3503955d011SMarcel Moolenaarobjdir=`'pwd'` 3513955d011SMarcel Moolenaar 3523955d011SMarcel MoolenaarShareDir() { 3533955d011SMarcel Moolenaar case "/$1" in 3543955d011SMarcel Moolenaar /) [ -d /share ] || return;; 3553955d011SMarcel Moolenaar */$HOST_TARGET) 3563955d011SMarcel Moolenaar if [ -d "$1/../share" ]; then 3573955d011SMarcel Moolenaar echo `dirname "$1"`/share 3583955d011SMarcel Moolenaar return 3593955d011SMarcel Moolenaar fi 3603955d011SMarcel Moolenaar ;; 3613955d011SMarcel Moolenaar esac 3623955d011SMarcel Moolenaar echo $1/share 3633955d011SMarcel Moolenaar} 3643955d011SMarcel Moolenaar 3653955d011SMarcel Moolenaar# make it easy to force prefix to use $HOST_TARGET 3663955d011SMarcel Moolenaar: looking at "$prefix" 3673955d011SMarcel Moolenaarcase "$prefix" in 3683955d011SMarcel Moolenaar*/host?target) prefix=`echo "$prefix" | sed "s,host.target,${HOST_TARGET},"`;; 3693955d011SMarcel Moolenaaresac 3703955d011SMarcel Moolenaar 3713955d011SMarcel Moolenaarshare_dir="${share_dir:-`ShareDir $prefix`}" 3723955d011SMarcel Moolenaar 3733955d011SMarcel MoolenaarAddConfigure --prefix= "$prefix" 3743955d011SMarcel Moolenaarcase "$CONFIGURE_ARGS" in 3753955d011SMarcel Moolenaar*--with-*-sys-path*) ;; # skip 3763955d011SMarcel Moolenaar*) [ "$share_dir" ] && AddConfigure --with-default-sys-path= "$share_dir/mk";; 3773955d011SMarcel Moolenaaresac 3783955d011SMarcel Moolenaarif [ "$mksrc" ]; then 3793955d011SMarcel Moolenaar AddConfigure --with-mksrc= "$mksrc" 3803955d011SMarcel Moolenaar # not all cc's support this 3813955d011SMarcel Moolenaar CFLAGS_MF= CFLAGS_MD= 3823955d011SMarcel Moolenaar export CFLAGS_MF CFLAGS_MD 3833955d011SMarcel Moolenaarfi 3843955d011SMarcel Moolenaar 385*3cbdda60SSimon J. Gerraty# this makes it easy to run the bmake we just built 386*3cbdda60SSimon J. Gerraty# the :tA dance is needed because 'pwd' and even /bin/pwd 387*3cbdda60SSimon J. Gerraty# may not give the same result as realpath(). 388*3cbdda60SSimon J. GerratyBmake() { 3893955d011SMarcel Moolenaar ( 390*3cbdda60SSimon J. Gerraty cd $Mydir && 391*3cbdda60SSimon J. Gerraty MAKESYSPATH=$mksrc SRCTOP=$Mydir OBJTOP=$objdir \ 392*3cbdda60SSimon J. Gerraty MAKEOBJDIR='${.CURDIR:S,${SRCTOP:tA},${OBJTOP:tA},}' \ 393*3cbdda60SSimon J. Gerraty ${BMAKE:-$objdir/bmake} -f $Mydir/Makefile "$@" 3943955d011SMarcel Moolenaar ) 3953955d011SMarcel Moolenaar} 3963955d011SMarcel Moolenaar 397*3cbdda60SSimon J. Gerraty# make sure test below uses the same diff that configure did 398*3cbdda60SSimon J. GerratyTOOL_DIFF=`type diff | sed 's,[()],,g;s,^[^/][^/]*,,;q'` 399*3cbdda60SSimon J. Gerratyexport TOOL_DIFF 400*3cbdda60SSimon J. Gerraty 401*3cbdda60SSimon J. Gerratyop_configure() { 402*3cbdda60SSimon J. Gerraty $srcdir/configure $CONFIGURE_ARGS || exit 1 403*3cbdda60SSimon J. Gerraty} 404*3cbdda60SSimon J. Gerraty 405*3cbdda60SSimon J. Gerratyop_build() { 406*3cbdda60SSimon J. Gerraty [ -s make-bootstrap.sh ] || op_configure 407*3cbdda60SSimon J. Gerraty chmod 755 make-bootstrap.sh || exit 1 408*3cbdda60SSimon J. Gerraty ./make-bootstrap.sh || exit 1 409*3cbdda60SSimon J. Gerraty case "$op" in 410*3cbdda60SSimon J. Gerraty build) op_test;; 411*3cbdda60SSimon J. Gerraty esac 412*3cbdda60SSimon J. Gerraty} 413*3cbdda60SSimon J. Gerraty 414*3cbdda60SSimon J. Gerratyop_test() { 415*3cbdda60SSimon J. Gerraty [ -x bmake ] || op_build 416*3cbdda60SSimon J. Gerraty Bmake test || exit 1 417*3cbdda60SSimon J. Gerraty} 418*3cbdda60SSimon J. Gerraty 419*3cbdda60SSimon J. Gerratyop_clean() { 420*3cbdda60SSimon J. Gerraty if [ -x bmake ]; then 421*3cbdda60SSimon J. Gerraty ln bmake bmake$$ 422*3cbdda60SSimon J. Gerraty BMAKE=$objdir/bmake$$ Bmake clean 423*3cbdda60SSimon J. Gerraty rm -f bmake$$ 424*3cbdda60SSimon J. Gerraty elif [ $objdir != $srcdir ]; then 425*3cbdda60SSimon J. Gerraty rm -rf * 426*3cbdda60SSimon J. Gerraty fi 427*3cbdda60SSimon J. Gerraty} 428*3cbdda60SSimon J. Gerraty 429*3cbdda60SSimon J. Gerratyop_install() { 430*3cbdda60SSimon J. Gerraty op_test 431*3cbdda60SSimon J. Gerraty case "$INSTALL_PREFIX,$INSTALL_BIN,$prefix" in 432*3cbdda60SSimon J. Gerraty ,$HOST_TARGET/bin,*/$HOST_TARGET) 433*3cbdda60SSimon J. Gerraty INSTALL_PREFIX=`dirname $prefix` 4343955d011SMarcel Moolenaar ;; 4353955d011SMarcel Moolenaar esac 436*3cbdda60SSimon J. Gerraty INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix} 437*3cbdda60SSimon J. Gerraty Bmake install prefix=$INSTALL_PREFIX BINDIR=$INSTALL_PREFIX/${INSTALL_BIN:-bin} ${INSTALL_DESTDIR:+DESTDIR=$INSTALL_DESTDIR} $INSTALL_ARGS || exit 1 438*3cbdda60SSimon J. Gerraty} 4393955d011SMarcel Moolenaar 440*3cbdda60SSimon J. Gerratyop_all() { 441*3cbdda60SSimon J. Gerraty rm -f make-bootstrap.sh bmake *.o 442*3cbdda60SSimon J. Gerraty if [ -n "$INSTALL_PREFIX" ]; then 443*3cbdda60SSimon J. Gerraty op_install 444*3cbdda60SSimon J. Gerraty else 445*3cbdda60SSimon J. Gerraty op_test 446*3cbdda60SSimon J. Gerraty MAKE_VERSION=`sed -n '/^MAKE_VERSION/ { s,.*= *,,;p; }' $srcdir/Makefile` 447*3cbdda60SSimon J. Gerraty echo You can install by running: 448*3cbdda60SSimon J. Gerraty echo 449*3cbdda60SSimon J. Gerraty echo $0 $cmd_args op=install 450*3cbdda60SSimon J. Gerraty echo 451*3cbdda60SSimon J. Gerraty echo "Use --install-prefix=/something to install somewhere other than $prefix" 452*3cbdda60SSimon J. Gerraty echo "Use --install-destdir=/somewhere to set DESTDIR during install" 453*3cbdda60SSimon J. Gerraty echo "Use --install-host-target to use INSTALL_BIN=$HOST_TARGET/bin" 454*3cbdda60SSimon J. Gerraty echo "Use -DWITH_PROG_VERSION to install as bmake-$MAKE_VERSION" 455*3cbdda60SSimon J. Gerraty echo "Use -DWITHOUT_PROG_LINK to supress bmake -> bmake-$MAKE_VERSION symlink" 456*3cbdda60SSimon J. Gerraty echo "Use -DWITHOUT_INSTALL_MK to skip installing files to $prefix/share/mk" 457*3cbdda60SSimon J. Gerraty fi 458*3cbdda60SSimon J. Gerraty} 459*3cbdda60SSimon J. Gerraty 460*3cbdda60SSimon J. Gerratyop_$op 461*3cbdda60SSimon J. Gerratyexit 0 462