64 ]) |
56 ]) |
65 |
57 |
66 AC_DEFUN([BPERF_CHECK_MEMORY_SIZE], |
58 AC_DEFUN([BPERF_CHECK_MEMORY_SIZE], |
67 [ |
59 [ |
68 AC_MSG_CHECKING([for memory size]) |
60 AC_MSG_CHECKING([for memory size]) |
69 # Default to 1024MB |
61 # Default to 1024 MB |
70 MEMORY_SIZE=1024 |
62 MEMORY_SIZE=1024 |
71 FOUND_MEM=no |
63 FOUND_MEM=no |
72 |
64 |
73 if test -f /proc/cpuinfo; then |
65 if test -f /proc/meminfo; then |
74 # Looks like a Linux system |
66 # Looks like a Linux (or cygwin) system |
75 MEMORY_SIZE=`cat /proc/meminfo | grep MemTotal | awk '{print [$]2}'` |
67 MEMORY_SIZE=`cat /proc/meminfo | grep MemTotal | awk '{print [$]2}'` |
76 MEMORY_SIZE=`expr $MEMORY_SIZE / 1024` |
68 MEMORY_SIZE=`expr $MEMORY_SIZE / 1024` |
77 FOUND_MEM=yes |
69 FOUND_MEM=yes |
78 fi |
70 elif test -x /usr/sbin/prtconf; then |
79 |
|
80 if test -x /usr/sbin/prtconf; then |
|
81 # Looks like a Solaris system |
71 # Looks like a Solaris system |
82 MEMORY_SIZE=`/usr/sbin/prtconf | grep "Memory size" | awk '{ print [$]3 }'` |
72 MEMORY_SIZE=`/usr/sbin/prtconf | grep "Memory size" | awk '{ print [$]3 }'` |
83 FOUND_MEM=yes |
73 FOUND_MEM=yes |
84 fi |
74 elif test -x /usr/sbin/system_profiler; then |
85 |
|
86 if test -x /usr/sbin/system_profiler; then |
|
87 # Looks like a MacOSX system |
75 # Looks like a MacOSX system |
88 MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print [$]2}'` |
76 MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print [$]2}'` |
89 MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024` |
77 MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024` |
90 FOUND_MEM=yes |
78 FOUND_MEM=yes |
91 fi |
79 elif test "x$build_os" = xwindows; then |
92 |
80 # Windows, but without cygwin |
93 if test "x$build_os" = xwindows; then |
|
94 MEMORY_SIZE=`systeminfo | grep 'Total Physical Memory:' | awk '{ print [$]4 }' | sed 's/,//'` |
81 MEMORY_SIZE=`systeminfo | grep 'Total Physical Memory:' | awk '{ print [$]4 }' | sed 's/,//'` |
95 FOUND_MEM=yes |
82 FOUND_MEM=yes |
96 fi |
83 fi |
97 |
84 |
98 if test "x$FOUND_MEM" = xyes; then |
85 if test "x$FOUND_MEM" = xyes; then |
99 AC_MSG_RESULT([$MEMORY_SIZE MB]) |
86 AC_MSG_RESULT([$MEMORY_SIZE MB]) |
100 else |
87 else |
101 AC_MSG_RESULT([could not detect memory size defaulting to 1024MB!]) |
88 AC_MSG_RESULT([could not detect memory size defaulting to 1024 MB!]) |
102 fi |
89 fi |
103 ]) |
90 ]) |
104 |
91 |
105 AC_DEFUN_ONCE([BPERF_SETUP_BUILD_CORES], |
92 AC_DEFUN_ONCE([BPERF_SETUP_BUILD_CORES], |
106 [ |
93 [ |
238 ]) |
225 ]) |
239 |
226 |
240 |
227 |
241 AC_DEFUN_ONCE([BPERF_SETUP_SMART_JAVAC], |
228 AC_DEFUN_ONCE([BPERF_SETUP_SMART_JAVAC], |
242 [ |
229 [ |
243 AC_ARG_WITH(server-java, [AS_HELP_STRING([--with-server-java], |
230 AC_ARG_WITH(sjavac-server-java, [AS_HELP_STRING([--with-sjavac-server-java], |
244 [use this java binary for running the javac background server and other long running java tasks in the build process, |
231 [use this java binary for running the sjavac background server and other long running java tasks in the build process, |
245 e.g. ---with-server-java="/opt/jrockit/bin/java -server"])]) |
232 e.g. ---with-sjavac-server-java="/opt/jrockit/bin/java -server"])]) |
246 |
233 |
247 if test "x$with_server_java" != x; then |
234 if test "x$with_sjavac_server_java" != x; then |
248 SERVER_JAVA="$with_server_java" |
235 SJAVAC_SERVER_JAVA="$with_sjavac_server_java" |
249 FOUND_VERSION=`$SERVER_JAVA -version 2>&1 | grep " version \""` |
236 FOUND_VERSION=`$SJAVAC_SERVER_JAVA -version 2>&1 | grep " version \""` |
250 if test "x$FOUND_VERSION" = x; then |
237 if test "x$FOUND_VERSION" = x; then |
251 AC_MSG_ERROR([Could not execute server java: $SERVER_JAVA]) |
238 AC_MSG_ERROR([Could not execute server java: $SJAVAC_SERVER_JAVA]) |
252 fi |
239 fi |
253 else |
240 else |
254 SERVER_JAVA="" |
241 SJAVAC_SERVER_JAVA="" |
255 # Hotspot specific options. |
242 # Hotspot specific options. |
256 ADD_JVM_ARG_IF_OK([-XX:+UseParallelOldGC],SERVER_JAVA,[$JAVA]) |
243 ADD_JVM_ARG_IF_OK([-verbosegc],SJAVAC_SERVER_JAVA,[$JAVA]) |
257 ADD_JVM_ARG_IF_OK([-verbosegc],SERVER_JAVA,[$JAVA]) |
|
258 # JRockit specific options. |
244 # JRockit specific options. |
259 ADD_JVM_ARG_IF_OK([-Xverbose:gc],SERVER_JAVA,[$JAVA]) |
245 ADD_JVM_ARG_IF_OK([-Xverbose:gc],SJAVAC_SERVER_JAVA,[$JAVA]) |
260 SERVER_JAVA="$JAVA $SERVER_JAVA" |
246 SJAVAC_SERVER_JAVA="$JAVA $SJAVAC_SERVER_JAVA" |
261 fi |
247 fi |
262 AC_SUBST(SERVER_JAVA) |
248 AC_SUBST(SJAVAC_SERVER_JAVA) |
263 |
249 |
264 AC_MSG_CHECKING([whether to use shared server for javac]) |
250 AC_ARG_WITH(sjavac-server-cores, [AS_HELP_STRING([--with-sjavac-server-cores], |
265 AC_ARG_ENABLE([javac-server], [AS_HELP_STRING([--enable-javac-server], |
251 [use at most this number of concurrent threads on the sjavac server @<:@probed@:>@])]) |
266 [enable the shared javac server during the build process @<:@disabled@:>@])], |
252 if test "x$with_sjavac_server_cores" != x; then |
267 [ENABLE_JAVAC_SERVER="${enableval}"], [ENABLE_JAVAC_SERVER='no']) |
253 SJAVAC_SERVER_CORES="$with_sjavac_server_cores" |
268 AC_MSG_RESULT([$ENABLE_JAVAC_SERVER]) |
|
269 if test "x$ENABLE_JAVAC_SERVER" = xyes; then |
|
270 JAVAC_USE_REMOTE=true |
|
271 JAVAC_SERVERS="$OUTPUT_ROOT/javacservers" |
|
272 else |
|
273 JAVAC_USE_REMOTE=false |
|
274 JAVAC_SERVERS= |
|
275 fi |
|
276 AC_SUBST(JAVAC_USE_REMOTE) |
|
277 AC_SUBST(JAVAC_SERVERS) |
|
278 |
|
279 AC_ARG_WITH(javac-server-cores, [AS_HELP_STRING([--with-javac-server-cores], |
|
280 [use at most this number of concurrent threads on the javac server @<:@probed@:>@])]) |
|
281 if test "x$with_javac_server_cores" != x; then |
|
282 JAVAC_SERVER_CORES="$with_javac_server_cores" |
|
283 else |
254 else |
284 if test "$NUM_CORES" -gt 16; then |
255 if test "$NUM_CORES" -gt 16; then |
285 # We set this arbitrary limit because we want to limit the heap |
256 # We set this arbitrary limit because we want to limit the heap |
286 # size of the javac server. |
257 # size of the javac server. |
287 # In the future we will make the javac compilers in the server |
258 # In the future we will make the javac compilers in the server |
288 # share more and more state, thus enabling us to use more and |
259 # share more and more state, thus enabling us to use more and |
289 # more concurrent threads in the server. |
260 # more concurrent threads in the server. |
290 JAVAC_SERVER_CORES="16" |
261 SJAVAC_SERVER_CORES="16" |
291 else |
262 else |
292 JAVAC_SERVER_CORES="$NUM_CORES" |
263 SJAVAC_SERVER_CORES="$NUM_CORES" |
293 fi |
264 fi |
294 |
265 |
295 if test "$MEMORY_SIZE" -gt "17000"; then |
266 if test "$MEMORY_SIZE" -gt "17000"; then |
296 MAX_HEAP_MEM=10000 |
267 MAX_HEAP_MEM=10000 |
297 ADD_JVM_ARG_IF_OK([-d64],SERVER_JAVA,[$SERVER_JAVA]) |
268 ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
298 ADD_JVM_ARG_IF_OK([-Xms10G -Xmx10G],SERVER_JAVA,[$SERVER_JAVA]) |
269 ADD_JVM_ARG_IF_OK([-Xms10G -Xmx10G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
299 ADD_JVM_ARG_IF_OK([-Xmn2G],SERVER_JAVA,[$SERVER_JAVA]) |
|
300 elif test "$MEMORY_SIZE" -gt "10000"; then |
270 elif test "$MEMORY_SIZE" -gt "10000"; then |
301 MAX_HEAP_MEM=6000 |
271 MAX_HEAP_MEM=6000 |
302 ADD_JVM_ARG_IF_OK([-d64],SERVER_JAVA,[$SERVER_JAVA]) |
272 ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
303 ADD_JVM_ARG_IF_OK([-Xms6G -Xmx6G],SERVER_JAVA,[$SERVER_JAVA]) |
273 ADD_JVM_ARG_IF_OK([-Xms6G -Xmx6G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
304 ADD_JVM_ARG_IF_OK([-Xmn1G],SERVER_JAVA,[$SERVER_JAVA]) |
|
305 elif test "$MEMORY_SIZE" -gt "5000"; then |
274 elif test "$MEMORY_SIZE" -gt "5000"; then |
306 MAX_HEAP_MEM=3000 |
275 MAX_HEAP_MEM=3000 |
307 ADD_JVM_ARG_IF_OK([-d64],SERVER_JAVA,[$SERVER_JAVA]) |
276 ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
308 ADD_JVM_ARG_IF_OK([-Xms1G -Xmx3G],SERVER_JAVA,[$SERVER_JAVA]) |
277 ADD_JVM_ARG_IF_OK([-Xms1G -Xmx3G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
309 ADD_JVM_ARG_IF_OK([-Xmn256M],SERVER_JAVA,[$SERVER_JAVA]) |
|
310 elif test "$MEMORY_SIZE" -gt "3800"; then |
278 elif test "$MEMORY_SIZE" -gt "3800"; then |
311 MAX_HEAP_MEM=2500 |
279 MAX_HEAP_MEM=2500 |
312 ADD_JVM_ARG_IF_OK([-Xms1G -Xmx2500M],SERVER_JAVA,[$SERVER_JAVA]) |
280 ADD_JVM_ARG_IF_OK([-Xms1G -Xmx2500M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
313 ADD_JVM_ARG_IF_OK([-Xmn256M],SERVER_JAVA,[$SERVER_JAVA]) |
|
314 elif test "$MEMORY_SIZE" -gt "1900"; then |
281 elif test "$MEMORY_SIZE" -gt "1900"; then |
315 MAX_HEAP_MEM=1200 |
282 MAX_HEAP_MEM=1200 |
316 ADD_JVM_ARG_IF_OK([-Xms700M -Xmx1200M],SERVER_JAVA,[$SERVER_JAVA]) |
283 ADD_JVM_ARG_IF_OK([-Xms700M -Xmx1400M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
317 ADD_JVM_ARG_IF_OK([-Xmn256M],SERVER_JAVA,[$SERVER_JAVA]) |
|
318 elif test "$MEMORY_SIZE" -gt "1000"; then |
284 elif test "$MEMORY_SIZE" -gt "1000"; then |
319 MAX_HEAP_MEM=900 |
285 MAX_HEAP_MEM=900 |
320 ADD_JVM_ARG_IF_OK([-Xms400M -Xmx900M],SERVER_JAVA,[$SERVER_JAVA]) |
286 ADD_JVM_ARG_IF_OK([-Xms400M -Xmx1100M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
321 ADD_JVM_ARG_IF_OK([-Xmn128M],SERVER_JAVA,[$SERVER_JAVA]) |
|
322 else |
287 else |
323 MAX_HEAP_MEM=512 |
288 MAX_HEAP_MEM=512 |
324 ADD_JVM_ARG_IF_OK([-Xms256M -Xmx512M],SERVER_JAVA,[$SERVER_JAVA]) |
289 ADD_JVM_ARG_IF_OK([-Xms256M -Xmx512M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
325 ADD_JVM_ARG_IF_OK([-Xmn128M],SERVER_JAVA,[$SERVER_JAVA]) |
290 fi |
326 fi |
291 |
|
292 ADD_JVM_ARG_IF_OK([-XX:PermSize=32m],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
|
293 ADD_JVM_ARG_IF_OK([-XX:MaxPermSize=160m],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
|
294 ADD_JVM_ARG_IF_OK([-XX:ThreadStackSize=$STACK_SIZE],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA]) |
327 |
295 |
328 MAX_COMPILERS_IN_HEAP=`expr $MAX_HEAP_MEM / 501` |
296 MAX_COMPILERS_IN_HEAP=`expr $MAX_HEAP_MEM / 501` |
329 if test "$JAVAC_SERVER_CORES" -gt "$MAX_COMPILERS_IN_HEAP"; then |
297 if test "$SJAVAC_SERVER_CORES" -gt "$MAX_COMPILERS_IN_HEAP"; then |
330 AC_MSG_CHECKING([if number of server cores must be reduced]) |
298 AC_MSG_CHECKING([if number of server cores must be reduced]) |
331 JAVAC_SERVER_CORES="$MAX_COMPILERS_IN_HEAP" |
299 SJAVAC_SERVER_CORES="$MAX_COMPILERS_IN_HEAP" |
332 AC_MSG_RESULT([yes, to $JAVAC_SERVER_CORES with max heap size $MAX_HEAP_MEM MB]) |
300 AC_MSG_RESULT([yes, to $SJAVAC_SERVER_CORES with max heap size $MAX_HEAP_MEM MB]) |
333 fi |
301 fi |
334 fi |
302 fi |
335 AC_SUBST(JAVAC_SERVER_CORES) |
303 AC_SUBST(SJAVAC_SERVER_CORES) |
336 |
|
337 AC_MSG_CHECKING([whether to track dependencies between Java packages]) |
|
338 AC_ARG_ENABLE([javac-deps], [AS_HELP_STRING([--enable-javac-deps], |
|
339 [enable the dependency tracking between Java packages @<:@disabled@:>@])], |
|
340 [ENABLE_JAVAC_DEPS="${enableval}"], [ENABLE_JAVAC_DEPS='no']) |
|
341 AC_MSG_RESULT([$ENABLE_JAVAC_DEPS]) |
|
342 if test "x$ENABLE_JAVAC_DEPS" = xyes; then |
|
343 JAVAC_USE_DEPS=true |
|
344 else |
|
345 JAVAC_USE_DEPS=false |
|
346 fi |
|
347 AC_SUBST(JAVAC_USE_DEPS) |
|
348 |
|
349 AC_MSG_CHECKING([whether to use multiple cores for javac compilation]) |
|
350 AC_ARG_ENABLE([javac-multi-core], [AS_HELP_STRING([--enable-javac-multi-core], |
|
351 [compile Java packages concurrently @<:@disabled@:>@])], |
|
352 [ENABLE_JAVAC_MULTICORE="${enableval}"], [ENABLE_JAVAC_MULTICORE='no']) |
|
353 AC_MSG_RESULT([$ENABLE_JAVAC_MULTICORE]) |
|
354 if test "x$ENABLE_JAVAC_MULTICORE" = xyes; then |
|
355 JAVAC_USE_MODE=MULTI_CORE_CONCURRENT |
|
356 else |
|
357 JAVAC_USE_MODE=SINGLE_THREADED_BATCH |
|
358 if test "x$ENABLE_JAVAC_DEPS" = xyes; then |
|
359 AC_MSG_WARN([Dependency tracking is not supported with single threaded batch compiles of Java source roots. Please add --disable-javac-deps to your configure options.]) |
|
360 AC_MSG_WARN([Disabling dependency tracking for you now.]) |
|
361 JAVAC_USE_DEPS=false |
|
362 fi |
|
363 if test "x$ENABLE_JAVAC_SERVER" = xyes; then |
|
364 AC_MSG_WARN([The javac server will not be used since single threaded batch compiles are run within their own JVM. Please add --disable-javac-server to your configure options.]) |
|
365 AC_MSG_WARN([Disabling javac server for you now.]) |
|
366 JAVAC_USE_REMOTE=false |
|
367 fi |
|
368 fi |
|
369 AC_SUBST(JAVAC_USE_MODE) |
|
370 |
304 |
371 AC_MSG_CHECKING([whether to use sjavac]) |
305 AC_MSG_CHECKING([whether to use sjavac]) |
372 AC_ARG_ENABLE([sjavac], [AS_HELP_STRING([--enable-sjavac], |
306 AC_ARG_ENABLE([sjavac], [AS_HELP_STRING([--enable-sjavac], |
373 [use sjavac to do fast incremental compiles @<:@disabled@:>@])], |
307 [use sjavac to do fast incremental compiles @<:@disabled@:>@])], |
374 [ENABLE_SJAVAC="${enableval}"], [ENABLE_SJAVAC='no']) |
308 [ENABLE_SJAVAC="${enableval}"], [ENABLE_SJAVAC='no']) |
375 AC_MSG_RESULT([$ENABLE_SJAVAC]) |
309 AC_MSG_RESULT([$ENABLE_SJAVAC]) |
376 AC_SUBST(ENABLE_SJAVAC) |
310 AC_SUBST(ENABLE_SJAVAC) |
377 |
311 |
378 ]) |
312 if test "x$ENABLE_SJAVAC" = xyes; then |
|
313 SJAVAC_SERVER_DIR="$OUTPUT_ROOT/javacservers" |
|
314 else |
|
315 SJAVAC_SERVER_DIR= |
|
316 fi |
|
317 AC_SUBST(SJAVAC_SERVER_DIR) |
|
318 |
|
319 ]) |