diff options
Diffstat (limited to 'configure')
| -rwxr-xr-x | configure | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/configure b/configure new file mode 100755 index 00000000..1672375e --- /dev/null +++ b/configure @@ -0,0 +1,133 @@ +#!/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/isaac rt/bigint rt/sync rt/test +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_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_CXXFLAGS +putvar CFG_LLVM_LDFLAGS +putvar CFG_LLVM_LIBS + +copy ${CFG_SRC_DIR}Makefile.in ./Makefile + +echo "configure: complete" |