#!/bin/sh CFG_SRC_DIR=${0%${0##*/}} CFG_BUILD_DIR=$PWD msg() { echo "configure: $1" } err() { echo "configure: error: $1" exit 1 } make_dir() { if [ ! -d $1 ] then msg "mkdir -p $1" mkdir -p $1 fi } copy() { msg "cp $1 $1" cp $1 $2 } make_test_subdirs() { for t in run-pass run-fail compile-fail do make_dir $1/test/$t done } putvar() { local T eval T=\$$1 printf "%-20s := %s\n" $1 "$T" printf "%-20s := %s\n" $1 "$T" >>config.mk } probe() { local V=$1 local P=$2 local T T=$(which $P 2>&1) if [ $? -ne 0 ] then T="" fi eval $V=\$T putvar $V } probe_need() { local V=$1 local P=$2 probe $1 $2 eval VV=\$$V if [ -z "$VV" ] then err "required program '$P' not found" fi } msg "recreating config.mk" echo '' >config.mk msg "making directories" for i in \ doc \ boot/fe boot/me boot/be boot/driver boot/util \ rt rt/isaac rt/bigint rt/sync rt/test \ llvmext do make_dir $i done make_test_subdirs boot for i in 0 1 2 do make_dir stage$i make_test_subdirs stage$i done msg "inspecting environment" CFG_OSTYPE=$(uname -s) CFG_CPUTYPE=$(uname -m) putvar CFG_SRC_DIR putvar CFG_BUILD_DIR putvar CFG_OSTYPE putvar CFG_CPUTYPE msg "looking for programs" probe_need CFG_GCC gcc probe_need CFG_LLVM_CONFIG llvm-config probe_need CFG_OCAMLC ocamlc probe_need CFG_PERL perl probe_need CFG_SED sed probe CFG_VALGRIND valgrind probe CFG_OCAMLOPT ocamlopt probe CFG_OCAMLC_OPT ocamlc.opt probe CFG_OCAMLOPT_OPT ocamlopt.opt probe CFG_FLEXLINK flexlink CFG_LLVM_VERSION=$(llvm-config --version) case $CFG_LLVM_VERSION in (3.0svn | 3.0) msg "found ok version of LLVM: $CFG_LLVM_VERSION" ;; (*) err "bad LLVM version: $CFG_LLVM_VERSION, need >=3.0svn" ;; esac CFG_LLVM_INCDIR=$(llvm-config --includedir) CFG_LLVM_BINDIR=$(llvm-config --bindir) CFG_LLVM_LIBDIR=$(llvm-config --libdir) CFG_LLVM_CXXFLAGS=$(llvm-config --cxxflags) CFG_LLVM_LDFLAGS=$(llvm-config --ldflags) CFG_LLVM_LIBS=$(llvm-config --libs) putvar CFG_LLVM_INCDIR putvar CFG_LLVM_BINDIR putvar CFG_LLVM_LIBDIR putvar CFG_LLVM_CXXFLAGS putvar CFG_LLVM_LDFLAGS putvar CFG_LLVM_LIBS copy ${CFG_SRC_DIR}Makefile.in ./Makefile echo "configure: complete"