summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Clements <[email protected]>2010-08-31 15:01:26 -0400
committerAustin Clements <[email protected]>2010-08-31 15:01:26 -0400
commit0f0456ec53d2739282eccf62b22f7c933d7cbae5 (patch)
tree79a5e16320981ab3c76dcfbb2e44da8f5b41c1a2
parent7d7dc9331bf33f77c9c3a71350782dadae8dd371 (diff)
downloadxv6-labs-0f0456ec53d2739282eccf62b22f7c933d7cbae5.tar.gz
xv6-labs-0f0456ec53d2739282eccf62b22f7c933d7cbae5.tar.bz2
xv6-labs-0f0456ec53d2739282eccf62b22f7c933d7cbae5.zip
Infer TOOLPREFIX, just like in JOS
-rw-r--r--Makefile18
1 files changed, 17 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 3ddc1c1..71f28b9 100644
--- a/Makefile
+++ b/Makefile
@@ -28,11 +28,27 @@ OBJS = \
vm.o\
# Cross-compiling (e.g., on Mac OS X)
-TOOLPREFIX = i386-jos-elf-
+#TOOLPREFIX = i386-jos-elf-
# Using native tools (e.g., on X86 Linux)
#TOOLPREFIX =
+# Try to infer the correct TOOLPREFIX if not set
+ifndef TOOLPREFIX
+TOOLPREFIX := $(shell if i386-jos-elf-objdump -i 2>&1 | grep '^elf32-i386$$' >/dev/null 2>&1; \
+ then echo 'i386-jos-elf-'; \
+ elif objdump -i 2>&1 | grep 'elf32-i386' >/dev/null 2>&1; \
+ then echo ''; \
+ else echo "***" 1>&2; \
+ echo "*** Error: Couldn't find an i386-*-elf version of GCC/binutils." 1>&2; \
+ echo "*** Is the directory with i386-jos-elf-gcc in your PATH?" 1>&2; \
+ echo "*** If your i386-*-elf toolchain is installed with a command" 1>&2; \
+ echo "*** prefix other than 'i386-jos-elf-', set your TOOLPREFIX" 1>&2; \
+ echo "*** environment variable to that prefix and run 'make' again." 1>&2; \
+ echo "*** To turn off this error, run 'gmake TOOLPREFIX= ...'." 1>&2; \
+ echo "***" 1>&2; exit 1; fi)
+endif
+
CC = $(TOOLPREFIX)gcc
AS = $(TOOLPREFIX)gas
LD = $(TOOLPREFIX)ld