Browse Source

Add a setenv.sh script for convenience.

This new script simply attempts to set up the build environment variables
to sane values without having to understand much of what's going on. It
also checks to make sure the tools are accessible.

If run on Minoca, it tries to match the native architecture. On other
OSes, it just defaults to x86 unless already set.
Evan Green 7 years ago
parent
commit
55cf82c04e
1 changed files with 88 additions and 0 deletions
  1. 88 0
      setenv.sh

+ 88 - 0
setenv.sh

@@ -0,0 +1,88 @@
+##
+## Small script to set the correct environment variables needed for building
+## Minoca OS. Source this into your current environment by running:
+## . ./setenv.sh
+##
+
+if [ "`basename -- $0`" = "setenv.sh" ]; then
+    echo "Error: This script is meant to be sourced, not run. Use: '. $0' to \
+source it into your current environment"
+fi
+
+if [ -z "$SRCROOT" ]; then
+    cd ..
+    export SRCROOT=$PWD
+    cd - > /dev/null
+fi
+
+if [ -z "$ARCH" ]; then
+    if [ "`uname -s`" = "Minoca" ]; then
+        case "`uname -m`" in
+        i586)  export ARCH=x86 VARIANT=q ;;
+        i686)  export ARCH=x86 ;;
+        armv6) export ARCH=armv6 ;;
+        armv7) export ARCH=armv7 ;;
+        *)     export ARCH=x86 ;;
+        esac
+    else
+        export ARCH=x86
+    fi
+fi
+
+if [ -z "$DEBUG" ]; then
+    export DEBUG=dbg
+fi
+
+if ! echo "$PATH" | grep -q "$SRCROOT/$ARCH$VARIANT$DEBUG/tools/bin"; then
+    OLDPATH="$PATH"
+    PATH="$SRCROOT/$ARCH$VARIANT$DEBUG/tools/bin:$OLDPATH"
+fi
+
+##
+## Perform some sanity checks on the environment.
+##
+
+if ! [ -d "$SRCROOT/os" ]; then
+    echo "Warning: I don't see the os repository at $SRCROOT/os."
+fi
+
+case "$ARCH$VARIANT" in
+    x86q)     target=i586-pc-minoca ;;
+    x86)      target=i686-pc-minoca ;;
+    armv[67]) target=arm-none-minoca ;;
+    x64)      target=x86_64-none-minoca ;;
+    *) echo "Warning: Unknown architecture $ARCH$VARIANT."
+esac
+
+tools="awk
+$target-ld
+$target-ar
+$target-gcc
+$target-g++
+iasl
+m4
+make"
+
+failed_tools=
+for tool in $tools; do
+    if ! which $tool > /dev/null 2>&1 && \
+       ! which $tool.exe > /dev/null 2>&1; then
+
+        failed_tools="$failed_tools $tool"
+    fi
+done
+
+if [ "$failed_tools" ]; then
+    if [ -d "$SRCROOT/third-party" ]; then
+        echo "Warning: Failed to find tools$failed_tools. You may need to \
+run 'make tools' in $SRCROOT/third-party."
+    else
+        echo "Warning: Failed to find tools$failed_tools. You may need to \
+download the latest Minoca toolchain for your build OS, or rebuild the tools
+from source by grabbing the third-party repository and running 'make tools'."
+    fi
+else
+    echo "Minoca build environment for $ARCH$VARIANT."
+fi
+
+unset target tools failed_tools