about summary refs log tree commit diff
path: root/configure
diff options
context:
space:
mode:
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure133
1 files changed, 133 insertions, 0 deletions
diff --git a/configure b/configure
new file mode 100755
index 00000000000..1672375e678
--- /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"