1 cat >/dev/null<<END_OF_LICENSE
  2 /*
  3  * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
  4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  5  *
  6  * This code is free software; you can redistribute it and/or modify it
  7  * under the terms of the GNU General Public License version 2 only, as
  8  * published by the Free Software Foundation.  Oracle designates this
  9  * particular file as subject to the "Classpath" exception as provided
 10  * by Oracle in the LICENSE file that accompanied this code.
 11  *
 12  * This code is distributed in the hope that it will be useful, but WITHOUT
 13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 14  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 15  * version 2 for more details (a copy is included in the LICENSE file that
 16  * accompanied this code).
 17  *
 18  * You should have received a copy of the GNU General Public License version
 19  * 2 along with this work; if not, write to the Free Software Foundation,
 20  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 21  *
 22  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 23  * or visit www.oracle.com if you need additional information or have any
 24  * questions.
 25  */
 26 END_OF_LICENSE
 27 
 28 # First lets check if this script was sourced into a bash compatible shell
 29 
 30 if [ "${BASH_SOURCE[0]}" = "${0}" ]; then 
 31    # We just bail if it was not sourced.. We want to set AND export PATH and JAVA_HOME...
 32    # So we must be sourced.  Otherwise we just fork a new shell, set the vars in the temp shell and exit
 33    echo "You must source this file ..."
 34    echo "Using either "
 35    echo "    . ${0}"
 36    echo "or"
 37    echo "    source ${0}"
 38    exit 1;  # exiting here is ONLY ok because we were not sourced.
 39 else
 40 
 41   # We were sourced so must not exit below or we will trash the users shell ;) possibly logging them out 
 42   # We first need to determine the arch an os types so we can construct/test against something like
 43   #    macosx-aarch64-server-release
 44   #       ^     ^
 45   #       |     + ${archtype}
 46   #       + ${ostype}
 47 
 48   OS=$(uname -s )
 49   if [[ "$OS" == Linux ]]; then
 50     export ostype=linux
 51   elif  [[ "$OS" == Darwin ]]; then
 52     export ostype=macosx
 53   else
 54     # Windows?
 55     echo "Could not determine ostype uname -s returned ${OS}"
 56   fi
 57 
 58   ARCH=$(uname -m)
 59   if [[ "$ARCH" == x86_64 ]]; then
 60     export archtype=${ARCH}
 61   elif  [[ "$ARCH" ==  aarch64 ]]; then
 62     export archtype=aarch64
 63   elif  [[ "$ARCH" == arm64 ]]; then
 64     export archtype=aarch64
 65   else
 66     #MIPS?
 67     echo "Could not determine aarchtype uname -m returned ${ARCH}"
 68   fi
 69 
 70   if [[ -z "${archtype}" || -z "${ostype}" ]]; then 
 71      echo "Can't determine archtype and/or ostype"
 72   else
 73     # We expect either 
 74     #   The user provided a value for BABYLON_JDK_HOME
 75     # or
 76     #   We can locate one because we are a subdir of BABYLON using ${PWD}/..
 77 
 78     if [[ -z "${BABYLON_JDK_HOME}" ]]; then 
 79        echo "No user provided BABYLON_JDK_HOME var, we will try \${PWD}/.. = $(realpath ${PWD}/..)"
 80        export BABYLON_JDK_HOME=$(realpath ${PWD}/..)
 81        echo "We found a babylon build here ${BABYLON_JDK_HOME}"
 82     else
 83        echo "Using user supplied BABYLON_JDK_HOME ${BABYLON_JDK_HOME}"
 84     fi
 85 
 86     if command -v jextract; then 
 87        echo 'jextract in your PATH'
 88        export JEXTRACT_HOME=$(dirname $(dirname $(command -v jextract)))
 89     else
 90        if [[ -z "${JEXTRACT_HOME}" ]]; then 
 91           echo "No user provided JEXTRACT_HOME var, we will try ~/jextract-22"
 92           if [[ -d ~/jextract-22/bin ]]; then 
 93              export JEXTRACT_HOME=$(realpath ~/jextract-22)
 94              echo "We found jextract here ${JEXTRACT_HOME}"
 95           fi
 96        else
 97           echo "Using user supplied JEXTRACT_HOME ${JEXTRACT_HOME}"
 98        fi
 99     fi
100 
101     if [[ -d "${JEXTRACT_HOME}/bin" ]]; then
102       if echo ${PATH} | grep ${JEXTRACT_HOME} >/dev/null ;then
103          echo "PATH already contains \${JEXTRACT_HOME}/bin"
104       else
105          export SAFE_PATH=${PATH}
106          echo "Adding \${JEXTRACT_HOME}/bin prefix to PATH, SAFE_PATH contains previous value"
107          export PATH=${JEXTRACT_HOME}/bin:${PATH}
108       fi
109     else
110       echo 'You will need to add jextract your PATH to be able to build'
111       echo 'Either add it, or JEXTRACT_HOME'
112     fi
113 
114     if [[ -d "${BABYLON_JDK_HOME}/build" ]]; then
115       export JAVA_HOME=${BABYLON_JDK_HOME}/build/${ostype}-${archtype}-server-release/jdk
116       if echo ${PATH} | grep ${JAVA_HOME} >/dev/null ;then
117          echo "PATH already contains \${JAVA_HOME}/bin"
118       else
119          export SAFE_PATH=${PATH}
120          echo "Adding \${JAVA_HOME}/bin prefix to PATH, SAFE_PATH contains previous value"
121          export PATH=${JAVA_HOME}/bin:${PATH}
122       fi
123     else
124       echo "We expected either:-"
125       echo "    \${PWD} to be in a hat subdir of a compiled babylon jdk build" 
126       echo "or" 
127       echo "    BABYLON_JDK_HOME to be set, to a compiled babylon jdk build"
128       echo ""
129       echo "If you are in a hat subdir make sure babylon jdk is built ;)"
130       echo ""
131       echo "If you are in another dir try  "
132       echo "    BABYLON_JDK_HOME=<<YOUR_PREBULT_BABYLON>> . ${0}"
133       echo "or"
134       echo "    BABYLON_JDK_HOME=<<YOUR_PREBULT_BABYLON>> source ${0}"
135     fi
136   fi
137 fi
138