1 # 2 # Copyright (c) 2010, 2011, 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 \); 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 \)`" 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" 75 76 if [ -d "${ALTSRC}/share/vm/jfr" ]; then 77 BASE_PATHS="${BASE_PATHS} ${ALTSRC}/share/vm/jfr/agent" 78 BASE_PATHS="${BASE_PATHS} ${ALTSRC}/share/vm/jfr/agent/isolated_deps/util" 79 BASE_PATHS="${BASE_PATHS} ${ALTSRC}/share/vm/jfr/jvm" 80 BASE_PATHS="${BASE_PATHS} ${ALTSRC}/share/vm/jfr" 81 fi 82 83 CORE_PATHS="${BASE_PATHS}" 84 # shared is already in BASE_PATHS. Should add vm/memory but that one is also in BASE_PATHS. 85 if [ -d "${ALTSRC}/share/vm/gc_implementation" ]; then 86 CORE_PATHS="${CORE_PATHS} `$FIND ${ALTSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`" 87 fi 88 CORE_PATHS="${CORE_PATHS} `$FIND ${COMMONSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`" 89 90 if [ -d "${ALTSRC}/share/vm/c1" ]; then 91 COMPILER1_PATHS="${ALTSRC}/share/vm/c1" 92 fi 93 COMPILER1_PATHS="${COMPILER1_PATHS} ${COMMONSRC}/share/vm/c1" 94 95 if [ -d "${ALTSRC}/share/vm/opto" ]; then 96 COMPILER2_PATHS="${ALTSRC}/share/vm/opto" 97 fi 98 COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/opto" 99 if [ -d "${ALTSRC}/share/vm/libadt" ]; then 100 COMPILER2_PATHS="${COMPILER2_PATHS} ${ALTSRC}/share/vm/libadt" 101 fi 102 COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/libadt" 103 COMPILER2_PATHS="${COMPILER2_PATHS} ${GENERATED}/adfiles" 104 105 # Include dirs per type. 106 case "${TYPE}" in 107 "core") Src_Dirs="${CORE_PATHS}" ;; 108 "kernel") Src_Dirs="${BASE_PATHS} ${COMPILER1_PATHS}" ;; 109 "compiler1") Src_Dirs="${CORE_PATHS} ${COMPILER1_PATHS}" ;; 110 "compiler2") Src_Dirs="${CORE_PATHS} ${COMPILER2_PATHS}" ;; 111 "tiered") Src_Dirs="${CORE_PATHS} ${COMPILER1_PATHS} ${COMPILER2_PATHS}" ;; 112 "zero") Src_Dirs="${CORE_PATHS}" ;; 113 "shark") Src_Dirs="${CORE_PATHS}" ;; 114 esac 115 116 COMPILER2_SPECIFIC_FILES="opto libadt bcEscapeAnalyzer.cpp chaitin* c2_* runtime_*" 117 COMPILER1_SPECIFIC_FILES="c1_*" 118 SHARK_SPECIFIC_FILES="shark" 119 ZERO_SPECIFIC_FILES="zero" 120 121 # These files need to be excluded when building the kernel target. 122 KERNEL_EXCLUDED_FILES="attachListener.cpp attachListener_windows.cpp dump.cpp dump_${Platform_arch_model}.cpp forte.cpp fprofiler.cpp heapDumper.cpp heapInspection.cpp jniCheck.cpp jvmtiCodeBlobEvents.cpp jvmtiExtensions.cpp jvmtiImpl.cpp jvmtiRawMonitor.cpp jvmtiTagMap.cpp jvmtiTrace.cpp restore.cpp serialize.cpp vmStructs.cpp g1MemoryPool.cpp psMemoryPool.cpp gcAdaptivePolicyCounters.cpp concurrentGCThread.cpp mutableNUMASpace.cpp allocationStats.cpp gSpaceCounters.cpp immutableSpace.cpp mutableSpace.cpp spaceCounters.cpp yieldingWorkgroup.cpp" 123 124 # Always exclude these. 125 Src_Files_EXCLUDE="jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp" 126 127 # Exclude per type. 128 case "${TYPE}" in 129 "core") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;; 130 "kernel") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ${KERNEL_EXCLUDED_FILES} ciTypeFlow.cpp" ;; 131 "compiler1") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;; 132 "compiler2") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;; 133 "tiered") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;; 134 "zero") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;; 135 "shark") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES}" ;; 136 esac 137 138 # Special handling of arch model. 139 case "${Platform_arch_model}" in 140 "x86_32") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_64*" ;; 141 "x86_64") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_32*" ;; 142 esac 143 144 # Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE. 145 function findsrc { 146 $FIND ${1}/. ! -name . -prune \ 147 -a \( -name \*.c -o -name \*.cpp -o -name \*.s \) \ 148 -a \! \( -name ${Src_Files_EXCLUDE// / -o -name } \) \ 149 | sed 's/.*\/\(.*\)/\1/'; 150 } 151 152 Src_Files= 153 for e in ${Src_Dirs}; do 154 Src_Files="${Src_Files}`findsrc ${e}` " 155 done 156 157 Obj_Files= 158 for e in ${Src_Files}; do 159 Obj_Files="${Obj_Files}${e%\.[!.]*}.obj " 160 done 161 162 echo Obj_Files=${Obj_Files}