aboutsummaryrefslogtreecommitdiff
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 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"