1 #!/bin/sh 2 3 # 4 # Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. 5 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 6 # 7 # This code is free software; you can redistribute it and/or modify it 8 # under the terms of the GNU General Public License version 2 only, as 9 # published by the Free Software Foundation. Sun designates this 10 # particular file as subject to the "Classpath" exception as provided 11 # by Sun in the LICENSE file that accompanied this code. 12 # 13 # This code is distributed in the hope that it will be useful, but WITHOUT 14 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 15 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 # version 2 for more details (a copy is included in the LICENSE file that 17 # accompanied this code). 18 # 19 # You should have received a copy of the GNU General Public License version 20 # 2 along with this work; if not, write to the Free Software Foundation, 21 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 22 # 23 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 24 # CA 95054 USA or visit www.sun.com if you need additional information or 25 # have any questions. 26 # 27 28 29 ############################################################################# 30 # 31 # Generic build profile.sh for all platforms, works in bash, sh, and ksh. 32 # 33 # Copy this file to your own area, and edit it to suit your needs. 34 # 35 # Ideally you either won't need to set the ALT_* variables because the 36 # build system will find what it needs through system provided paths 37 # or environment variables, or you have installed the component in the 38 # recommended default path. 39 # 40 # If you find yourself forced to set an ALT_* environment variable and 41 # suspect we could have figured it out automatically, please let us know. 42 # 43 # Most ALT_* directory defaults are based on being in the parent directory in 44 # ALT_SLASH_JAVA, so it's possible to create for example a "C:/jdk6" 45 # directory, assign that to ALT_SLASH_JAVA, and place all the components 46 # in that directory. This could also minimize the ALT_* environment 47 # variables you need to set. 48 # 49 ######## 50 # 51 # Assumes basic unix utilities are in the PATH already (uname, hostname, etc.). 52 # 53 # On Windows, assumes PROCESSOR_IDENTIFIER, VS71COMNTOOLS, 54 # SYSTEMROOT (or SystemRoot), COMPUTERNAME (or hostname works), and 55 # USERNAME is defined in the environment. 56 # This profile does not rely on using vcvars32.bat and 64bit Setup.bat. 57 # Uses CYGWIN cygpath to make sure paths are space-free. 58 # 59 # The JDK Makefiles may change in the future, making some of these 60 # settings unnecessary or redundant. 61 # 62 # This is a working example, but may or may not work on all systems. 63 # 64 ############################################################################# 65 # 66 # WARNING: This file will clobber the value of some environment variables. 67 # 68 # Sets up these environment variables for doing JDK builds: 69 # USERNAME 70 # COMPUTERNAME 71 # PATH 72 # Windows Only: 73 # LIB 74 # INCLUDE 75 # PS1 76 # SHELL 77 # 78 # Attempts to set these variables for the JDK builds: 79 # ALT_COMPILER_PATH 80 # ALT_BOOTDIR 81 # ALT_BINARY_PLUGS_PATH 82 # ALT_CLOSED_JDK_IMPORT_PATH 83 # Windows Only: 84 # ALT_UNIXCOMMAND_PATH 85 # ALT_MSDEVTOOLS_PATH 86 # ALT_DXSDK_PATH 87 # ALT_MSVCRT_DLL_PATH 88 # ALT_MSVCR71_DLL_PATH 89 # 90 ############################################################################# 91 # 92 # Keep in mind that at this point, we are running in some kind of shell 93 # (sh, ksh, or bash). We don't know if it's solaris, linux, or windows 94 # CYGWIN. We need to figure that out. 95 96 # Find user name 97 if [ "${USERNAME}" = "" ] ; then 98 USERNAME="${LOGNAME}" 99 fi 100 if [ "${USERNAME}" = "" ] ; then 101 USERNAME="${USER}" 102 fi 103 export USERNAME 104 105 # Find machine name 106 if [ "${COMPUTERNAME}" = "" ] ; then 107 COMPUTERNAME="$(hostname)" 108 fi 109 export COMPUTERNAME 110 111 # Boot jdk 112 bootjdk=jdk1.6.0 113 importjdk=jdk1.7.0 114 115 # Uses 'uname -s', but only expect SunOS or Linux, assume Windows otherwise. 116 osname=$(uname -s) 117 if [ "${osname}" = SunOS ] ; then 118 119 # System place where JDK installed images are stored? 120 jdk_instances=/usr/jdk/instances 121 122 # Get the Sun Studio compilers (and latest patches for them too) 123 if [ "${ALT_COMPILER_PATH}" = "" ] ; then 124 ALT_COMPILER_PATH=/opt/SUNWspro/bin 125 export ALT_COMPILER_PATH 126 fi 127 if [ ! -d ${ALT_COMPILER_PATH} ] ; then 128 echo "WARNING: Cannot access ALT_COMPILER_PATH=${ALT_COMPILER_PATH}" 129 fi 130 131 # Place compiler path early in PATH to avoid 'cc' conflicts. 132 path4sdk=${ALT_COMPILER_PATH}:/usr/ccs/bin:/usr/ccs/lib:/usr/bin:/bin:/usr/sfw/bin 133 134 # Make sure these are unset 135 unset JAVA_HOME 136 unset LD_LIBRARY_PATH 137 138 # Build in C locale 139 LANG=C 140 export LANG 141 LC_ALL=C 142 export LC_ALL 143 144 umask 002 145 146 elif [ "${osname}" = Linux ] ; then 147 148 # System place where JDK installed images are stored? 149 jdk_instances=/opt/java 150 151 # Use compilers from /usr/bin 152 path4sdk=/usr/bin:/bin:/usr/sbin:/sbin 153 154 # Make sure these are unset 155 unset JAVA_HOME 156 unset LD_LIBRARY_PATH 157 158 # Build in C locale 159 LANG=C 160 export LANG 161 LC_ALL=C 162 export LC_ALL 163 164 umask 002 165 166 else 167 168 # System place where JDK installed images are stored? 169 jdk_instances="C:" 170 171 # Windows: Differs on CYGWIN and the compiler available. 172 # Also, blanks in pathnames gives make headaches, so anything placed 173 # in any ALT_* variable should be the short windows DOS names. 174 175 # Check CYGWIN (should have already been done) 176 # Assumption here is that you are in a shell window via cygwin. 177 proc_arch=`echo "$(PROCESSOR_IDENTIFIER)" | expand | cut -d' ' -f1 | sed -e 's@x86@X86@g' -e 's@Intel64@X64@g' -e 's@em64t@X64@g' -e 's@EM64T@X64@g' -e 's@amd64@X64@g' -e 's@AMD64@X64@g' -e 's@ia64@IA64@g'` 178 if [ "${proc_arch}" = "X64" ] ; then 179 windows_arch=amd64 180 else 181 windows_arch=i586 182 fi 183 # We need to check if we are running a CYGWIN shell 184 if [ "$(uname -a | fgrep Cygwin)" != "" -a -f /bin/cygpath ] ; then 185 # For CYGWIN, uname will have "Cygwin" in it, and /bin/cygpath should exist 186 # Utility to convert to short pathnames without spaces 187 cygpath="/usr/bin/cygpath -a -m -s" 188 # Most unix utilities are in the /usr/bin 189 unixcommand_path="/usr/bin" 190 # Make the prompt tell you CYGWIN 191 export PS1="CYGWIN:${COMPUTERNAME}:${USERNAME}[\!] " 192 else 193 echo "ERROR: Cannot find CYGWIN on this machine" 194 exit 1 195 fi 196 if [ "${ALT_UNIXCOMMAND_PATH}" != "" ] ; then 197 unixcommand_path=${ALT_UNIXCOMMAND_PATH} 198 fi 199 200 # Default shell 201 export SHELL="${unixcommand_path}/sh" 202 203 # Setup path system (verify this is right) 204 if [ "${SystemRoot}" != "" ] ; then 205 sys_root=$(${cygpath} "${SystemRoot}") 206 elif [ "${SYSTEMROOT}" != "" ] ; then 207 sys_root=$(${cygpath} "${SYSTEMROOT}") 208 else 209 sys_root=$(${cygpath} "C:/WINNT") 210 fi 211 path4sdk="${unixcommand_path};${sys_root}/system32;${sys_root};${sys_root}/System32/Wbem" 212 if [ ! -d "${sys_root}" ] ; then 213 echo "WARNING: No system root found at: ${sys_root}" 214 fi 215 216 # Compiler setup (nasty part) 217 # NOTE: You can use vcvars32.bat to set PATH, LIB, and INCLUDE. 218 # NOTE: CYGWIN has a link.exe too, make sure the compilers are first 219 if [ "${windows_arch}" = i586 ] ; then 220 # 32bit Windows compiler settings 221 # VisualStudio .NET 2003 VC++ 7.1 (VS71COMNTOOLS should be defined) 222 vs_root=$(${cygpath} "${VS71COMNTOOLS}/../..") 223 # Fill in PATH, LIB, and INCLUDE (unset all others to make sure) 224 msdev_root="${vs_root}/Common7/Tools" 225 msdevtools_path="${msdev_root}/bin" 226 vc7_root="${vs_root}/Vc7" 227 compiler_path="${vc7_root}/bin" 228 platform_sdk="${vc7_root}/PlatformSDK" 229 230 # LIB and INCLUDE must use ; as a separator 231 include4sdk="${vc7_root}/atlmfc/include" 232 include4sdk="${include4sdk};${vc7_root}/include" 233 include4sdk="${include4sdk};${platform_sdk}/include/prerelease" 234 include4sdk="${include4sdk};${platform_sdk}/include" 235 include4sdk="${include4sdk};${vs_root}/SDK/v1.1/include" 236 lib4sdk="${lib4sdk};${vc7_root}/lib" 237 lib4sdk="${lib4sdk};${platform_sdk}/lib/prerelease" 238 lib4sdk="${lib4sdk};${platform_sdk}/lib" 239 lib4sdk="${lib4sdk};${vs_root}/SDK/v1.1/lib" 240 # Search path and DLL locating path 241 # WARNING: CYGWIN has a link.exe too, make sure compilers are first 242 path4sdk="${vs_root}/Common7/Tools/bin;${path4sdk}" 243 path4sdk="${vs_root}/SDK/v1.1/bin;${path4sdk}" 244 path4sdk="${vs_root}/Common7/Tools;${path4sdk}" 245 path4sdk="${vs_root}/Common7/Tools/bin/prerelease;${path4sdk}" 246 path4sdk="${vs_root}/Common7/IDE;${path4sdk}" 247 path4sdk="${compiler_path};${path4sdk}" 248 elif [ "${windows_arch}" = amd64 ] ; then 249 # AMD64 64bit Windows compiler settings 250 if [ "${ALT_DEPLOY_MSSDK}" != "" ] ; then 251 platform_sdk=${ALT_DEPLOY_MSSDK} 252 else 253 platform_sdk=$(${cygpath} "C:/Program Files/Microsoft Platform SDK/") 254 fi 255 if [ "${ALT_COMPILER_PATH}" != "" ] ; then 256 compiler_path=${ALT_COMPILER_PATH} 257 if [ "${ALT_DEPLOY_MSSDK}" = "" ] ; then 258 platform_sdk=${ALT_COMPILER_PATH}/../../../.. 259 fi 260 else 261 compiler_path="${platform_sdk}/Bin/win64/x86/AMD64" 262 fi 263 if [ "${ALT_MSDEVTOOLS_PATH}" != "" ] ; then 264 msdevtools_path=${ALT_MSDEVTOOLS_PATH} 265 else 266 msdevtools_path="${platform_sdk}/Bin/win64/x86/AMD64" 267 fi 268 msdevtools_path="${compiler_path}" 269 # LIB and INCLUDE must use ; as a separator 270 include4sdk="${platform_sdk}/Include" 271 include4sdk="${include4sdk};${platform_sdk}/Include/crt/sys" 272 include4sdk="${include4sdk};${platform_sdk}/Include/mfc" 273 include4sdk="${include4sdk};${platform_sdk}/Include/atl" 274 include4sdk="${include4sdk};${platform_sdk}/Include/crt" 275 lib4sdk="${platform_sdk}/Lib/AMD64" 276 lib4sdk="${lib4sdk};${platform_sdk}/Lib/AMD64/atlmfc" 277 # Search path and DLL locating path 278 # WARNING: CYGWIN has a link.exe too, make sure compilers are first 279 path4sdk="${platform_sdk}/bin;${path4sdk}" 280 path4sdk="${compiler_path};${path4sdk}" 281 fi 282 # Export LIB and INCLUDE 283 unset lib 284 unset Lib 285 LIB="${lib4sdk}" 286 export LIB 287 unset include 288 unset Include 289 INCLUDE="${include4sdk}" 290 export INCLUDE 291 292 # Turn all \\ into /, remove duplicates and trailing / 293 slash_path="$(echo ${path4sdk} | sed -e 's@\\\\@/@g' -e 's@//@/@g' -e 's@/$@@' -e 's@/;@;@g')" 294 path4sdk="${slash_path}" 295 296 # Convert path4sdk to cygwin style 297 path4sdk="$(/usr/bin/cygpath -p ${path4sdk})" 298 299 fi 300 301 # Get the previous JDK to be used to bootstrap the build 302 if [ "${ALT_BOOTDIR}" = "" ] ; then 303 ALT_BOOTDIR=${jdk_instances}/${bootjdk} 304 export ALT_BOOTDIR 305 fi 306 if [ ! -d ${ALT_BOOTDIR} ] ; then 307 echo "WARNING: Cannot access ALT_BOOTDIR=${ALT_BOOTDIR}" 308 fi 309 310 # Get the import JDK to be used to get hotspot VM if not built 311 if [ "${ALT_JDK_IMPORT_PATH}" = "" -a -d ${jdk_instances}/${importjdk} ] ; then 312 ALT_JDK_IMPORT_PATH=${jdk_instances}/${importjdk} 313 export ALT_JDK_IMPORT_PATH 314 fi 315 316 # Get the latest JDK binary plugs or build to import pre-built binaries 317 if [ "${ALT_BINARY_PLUGS_PATH}" = "" ] ; then 318 binplugs=${jdk_instances}/openjdk-binary-plugs 319 jdkplugs=${jdk_instances}/${importjdk} 320 if [ -d ${binplugs} ] ; then 321 ALT_BINARY_PLUGS_PATH=${binplugs} 322 export ALT_BINARY_PLUGS_PATH 323 elif [ "${ALT_CLOSED_JDK_IMPORT_PATH}" = "" -a -d ${jdkplugs} ] ; then 324 ALT_CLOSED_JDK_IMPORT_PATH=${jdkplugs} 325 export ALT_CLOSED_JDK_IMPORT_PATH 326 fi 327 if [ "${ALT_BINARY_PLUGS_PATH}" = "" ] ; then 328 echo "WARNING: Missing ALT_BINARY_PLUGS_PATH: ${binplugs}" 329 fi 330 fi 331 if [ "${ALT_BINARY_PLUGS_PATH}" != "" -a ! -d "${ALT_BINARY_PLUGS_PATH}" ] ; then 332 echo "WARNING: Cannot access ALT_BINARY_PLUGS_PATH=${ALT_BINARY_PLUGS_PATH}" 333 fi 334 if [ "${ALT_CLOSED_JDK_IMPORT_PATH}" != "" -a ! -d "${ALT_CLOSED_JDK_IMPORT_PATH}" ] ; then 335 echo "WARNING: Cannot access ALT_CLOSED_JDK_IMPORT_PATH=${ALT_CLOSED_JDK_IMPORT_PATH}" 336 fi 337 338 # Export PATH setting 339 PATH="${path4sdk}" 340 export PATH 341