1 # 2 # Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. 8 # 9 # This code is distributed in the hope that it will be useful, but WITHOUT 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 # version 2 for more details (a copy is included in the LICENSE file that 13 # accompanied this code). 14 # 15 # You should have received a copy of the GNU General Public License version 16 # 2 along with this work; if not, write to the Free Software Foundation, 17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 # 19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 # or visit www.oracle.com if you need additional information or have any 21 # questions. 22 # 23 # 24 25 set -e 26 27 # Note that we currently do not have a way to set HotSpotMksHome in 28 # the batch build, but so far this has not seemed to be a problem. The 29 # reason this environment variable is necessary is that it seems that 30 # Windows truncates very long PATHs when executing shells like MKS's 31 # sh, and it has been found that sometimes `which sh` fails. 32 33 if [ "x$HotSpotMksHome" != "x" ]; then 34 TOOL_DIR="$HotSpotMksHome" 35 else 36 # HotSpotMksHome is not set so use the directory that contains "sh". 37 # This works with both MKS and Cygwin. 38 SH=`which sh` 39 TOOL_DIR=`dirname "$SH"` 40 fi 41 42 DIRNAME="$TOOL_DIR/dirname" 43 FIND="$TOOL_DIR/find" 44 45 TYPE=$1 46 Platform_arch=$2 47 Platform_arch_model=$3 48 Platform_os_family=windows 49 Platform_os_arch=windows_$Platform_arch 50 51 WorkSpace=$4 52 GENERATED=$5 53 54 COMMONSRC_REL=src 55 ALTSRC_REL=src/closed # Change this to pick up alt sources from somewhere else 56 57 COMMONSRC=${WorkSpace}/${COMMONSRC_REL} 58 ALTSRC=${WorkSpace}/${ALTSRC_REL} 59 60 BASE_PATHS="`if [ -d ${ALTSRC}/share/vm ]; then $FIND ${ALTSRC}/share/vm ! -name vm -prune -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt -o -name jfr \); fi`" 61 BASE_PATHS="${BASE_PATHS} ` $FIND ${COMMONSRC}/share/vm ! -name vm -prune -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt -o -name jfr \)`" 62 63 for sd in \ 64 share/vm/gc_implementation/shared \ 65 os/${Platform_os_family}/vm \ 66 cpu/${Platform_arch}/vm \ 67 os_cpu/${Platform_os_arch}/vm; do 68 if [ -d "${ALTSRC}/${sd}" ]; then 69 BASE_PATHS="${BASE_PATHS} ${ALTSRC}/${sd}" 70 fi 71 BASE_PATHS="${BASE_PATHS} ${COMMONSRC}/${sd}" 72 done 73 74 BASE_PATHS="${BASE_PATHS} ${GENERATED}/jvmtifiles ${GENERATED}/jfrfiles" 75 76 if [ "$ENABLE_JFR" = "true" ]; then 77 BASE_PATHS="${BASE_PATHS} `$FIND ${COMMONSRC}/share/vm/jfr -type d`" 78 fi 79 80 BASE_PATHS="${BASE_PATHS} ${COMMONSRC}/share/vm/prims/wbtestmethods" 81 82 # shared is already in BASE_PATHS. Should add vm/memory but that one is also in BASE_PATHS. 83 if [ -d "${ALTSRC}/share/vm/gc_implementation" ]; then 84 BASE_PATHS="${BASE_PATHS} `$FIND ${ALTSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`" 85 fi 86 BASE_PATHS="${BASE_PATHS} `$FIND ${COMMONSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`" 87 88 if [ -d "${ALTSRC}/share/vm/c1" ]; then 89 COMPILER1_PATHS="${ALTSRC}/share/vm/c1" 90 fi 91 COMPILER1_PATHS="${COMPILER1_PATHS} ${COMMONSRC}/share/vm/c1" 92 93 if [ -d "${ALTSRC}/share/vm/opto" ]; then 94 COMPILER2_PATHS="${ALTSRC}/share/vm/opto" 95 fi 96 COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/opto" 97 if [ -d "${ALTSRC}/share/vm/libadt" ]; then 98 COMPILER2_PATHS="${COMPILER2_PATHS} ${ALTSRC}/share/vm/libadt" 99 fi 100 COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/libadt" 101 COMPILER2_PATHS="${COMPILER2_PATHS} ${GENERATED}/adfiles" 102 103 # Include dirs per type. 104 case "${TYPE}" in 105 "compiler1") Src_Dirs="${BASE_PATHS} ${COMPILER1_PATHS}" ;; 106 "compiler2") Src_Dirs="${BASE_PATHS} ${COMPILER2_PATHS}" ;; 107 "tiered") Src_Dirs="${BASE_PATHS} ${COMPILER1_PATHS} ${COMPILER2_PATHS}" ;; 108 "zero") Src_Dirs="${BASE_PATHS}" ;; 109 "shark") Src_Dirs="${BASE_PATHS}" ;; 110 esac 111 112 COMPILER2_SPECIFIC_FILES="opto libadt bcEscapeAnalyzer.cpp c2_* runtime_*" 113 COMPILER1_SPECIFIC_FILES="c1_*" 114 SHARK_SPECIFIC_FILES="shark" 115 ZERO_SPECIFIC_FILES="zero" 116 117 # Always exclude these. 118 Src_Files_EXCLUDE="jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp" 119 120 # Exclude per type. 121 case "${TYPE}" in 122 "compiler1") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;; 123 "compiler2") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;; 124 "tiered") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;; 125 "zero") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;; 126 "shark") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES}" ;; 127 esac 128 129 # Special handling of arch model. 130 case "${Platform_arch_model}" in 131 "x86_32") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_64*" ;; 132 "x86_64") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_32*" ;; 133 esac 134 135 # Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE. 136 function findsrc { 137 $FIND ${1}/. ! -name . -prune \ 138 -a \( -name \*.c -o -name \*.cpp -o -name \*.s \) \ 139 -a \! \( -name ${Src_Files_EXCLUDE// / -o -name } \) \ 140 | sed 's/.*\/\(.*\)/\1/'; 141 } 142 143 Src_Files= 144 for e in ${Src_Dirs}; do 145 Src_Files="${Src_Files}`findsrc ${e}` " 146 done 147 148 Obj_Files=" " 149 for e in ${Src_Files}; do 150 o="${e%\.[!.]*}.obj" 151 set +e 152 chk=`expr "${Obj_Files}" : ".* $o"` 153 set -e 154 if [ "$chk" != 0 ]; then 155 echo "# INFO: skipping duplicate $o" 156 continue 157 fi 158 Obj_Files="${Obj_Files}$o " 159 done 160 161 echo Obj_Files=${Obj_Files}