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 BASE_PATHS="${BASE_PATHS} ${COMMONSRC}/share/vm/gc_implementation/shenandoah/c1" 82 BASE_PATHS="${BASE_PATHS} ${COMMONSRC}/share/vm/gc_implementation/shenandoah/c2" 83 BASE_PATHS="${BASE_PATHS} ${COMMONSRC}/share/vm/gc_implementation/shenandoah/heuristics" 84 BASE_PATHS="${BASE_PATHS} ${COMMONSRC}/share/vm/gc_implementation/shenandoah/mode" 85 86 # shared is already in BASE_PATHS. Should add vm/memory but that one is also in BASE_PATHS. 87 if [ -d "${ALTSRC}/share/vm/gc_implementation" ]; then 88 BASE_PATHS="${BASE_PATHS} `$FIND ${ALTSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`" 89 fi 90 BASE_PATHS="${BASE_PATHS} `$FIND ${COMMONSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`" 91 92 if [ -d "${ALTSRC}/share/vm/c1" ]; then 93 COMPILER1_PATHS="${ALTSRC}/share/vm/c1" 94 fi 95 COMPILER1_PATHS="${COMPILER1_PATHS} ${COMMONSRC}/share/vm/c1" 96 97 if [ -d "${ALTSRC}/share/vm/opto" ]; then 98 COMPILER2_PATHS="${ALTSRC}/share/vm/opto" 99 fi 100 COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/opto" 101 if [ -d "${ALTSRC}/share/vm/libadt" ]; then 102 COMPILER2_PATHS="${COMPILER2_PATHS} ${ALTSRC}/share/vm/libadt" 103 fi 104 COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/libadt" 105 COMPILER2_PATHS="${COMPILER2_PATHS} ${GENERATED}/adfiles" 106 107 # Include dirs per type. 108 case "${TYPE}" in 109 "compiler1") Src_Dirs="${BASE_PATHS} ${COMPILER1_PATHS}" ;; 110 "compiler2") Src_Dirs="${BASE_PATHS} ${COMPILER2_PATHS}" ;; 111 "tiered") Src_Dirs="${BASE_PATHS} ${COMPILER1_PATHS} ${COMPILER2_PATHS}" ;; 112 "zero") Src_Dirs="${BASE_PATHS}" ;; 113 "shark") Src_Dirs="${BASE_PATHS}" ;; 114 esac 115 116 COMPILER2_SPECIFIC_FILES="opto libadt bcEscapeAnalyzer.cpp c2_* runtime_*" 117 COMPILER1_SPECIFIC_FILES="c1_*" 118 SHARK_SPECIFIC_FILES="shark" 119 ZERO_SPECIFIC_FILES="zero" 120 121 # Always exclude these. 122 Src_Files_EXCLUDE="jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp" 123 124 # Exclude per type. 125 case "${TYPE}" in 126 "compiler1") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;; 127 "compiler2") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;; 128 "tiered") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;; 129 "zero") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;; 130 "shark") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES}" ;; 131 esac 132 133 # Special handling of arch model. 134 case "${Platform_arch_model}" in 135 "x86_32") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_64*" ;; 136 "x86_64") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_32*" ;; 137 esac 138 139 # Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE. 140 function findsrc { 141 $FIND ${1}/. ! -name . -prune \ 142 -a \( -name \*.c -o -name \*.cpp -o -name \*.s \) \ 143 -a \! \( -name ${Src_Files_EXCLUDE// / -o -name } \) \ 144 | sed 's/.*\/\(.*\)/\1/'; 145 } 146 147 Src_Files= 148 for e in ${Src_Dirs}; do 149 Src_Files="${Src_Files}`findsrc ${e}` " 150 done 151 152 Obj_Files=" " 153 for e in ${Src_Files}; do 154 o="${e%\.[!.]*}.obj" 155 set +e 156 chk=`expr "${Obj_Files}" : ".* $o"` 157 set -e 158 if [ "$chk" != 0 ]; then 159 echo "# INFO: skipping duplicate $o" 160 continue 161 fi 162 Obj_Files="${Obj_Files}$o " 163 done 164 165 echo Obj_Files=${Obj_Files}