aboutsummaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2011-03-17 23:51:45 -0700
committerGraydon Hoare <[email protected]>2011-03-17 23:52:15 -0700
commit4c2245d8421ff43832b005375025cd14f56c1ca9 (patch)
tree65c7fc360cdd49854c380d0b2f6640ff347ad96d /configure
parentrustc: Switch mutability from being a type constructor to a field annotation (diff)
downloadrust-4c2245d8421ff43832b005375025cd14f56c1ca9.tar.xz
rust-4c2245d8421ff43832b005375025cd14f56c1ca9.zip
Yet more painstaking configure/make logic.
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure116
1 files changed, 87 insertions, 29 deletions
diff --git a/configure b/configure
index 0e584f35..1672375e 100755
--- a/configure
+++ b/configure
@@ -3,41 +3,40 @@
CFG_SRC_DIR=${0%${0##*/}}
CFG_BUILD_DIR=$PWD
-echo "configure: recreating config.mk"
-echo '' >config.mk
+msg() {
+ echo "configure: $1"
+}
-echo "configure: 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
- mkdir -p -v $i
-done
+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
- mkdir -p -v $1/test/$t
+ make_dir $1/test/$t
done
}
-make_test_subdirs boot
-
-for i in 0 1 2
-do
- mkdir -p -v stage$i
- make_test_subdirs stage$i
-done
-
-echo "configure: copying Makefile"
-cp -v ${CFG_SRC_DIR}Makefile.in ./Makefile
-
putvar() {
local T
eval T=\$$1
- printf "%-20s := %s\n" $1 $T
- printf "%-20s := %s\n" $1 $T >>config.mk
+ printf "%-20s := %s\n" $1 "$T"
+ printf "%-20s := %s\n" $1 "$T" >>config.mk
}
probe() {
@@ -53,7 +52,39 @@ probe() {
putvar $V
}
-echo "configure: inspecting environment"
+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)
@@ -63,13 +94,40 @@ putvar CFG_BUILD_DIR
putvar CFG_OSTYPE
putvar CFG_CPUTYPE
-echo "configure: looking for programs"
+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_OCAMLC ocamlc
-probe CFG_OCAMLC_OPT ocamlc.opt
probe CFG_OCAMLOPT ocamlopt
+probe CFG_OCAMLC_OPT ocamlc.opt
probe CFG_OCAMLOPT_OPT ocamlopt.opt
probe CFG_FLEXLINK flexlink
-probe CFG_LLVM_CONFIG llvm-config
+
+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"