< prev index next >
make/autoconf/configure
Print this page
*** 1,8 ****
#!/bin/bash
#
! # Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
--- 1,8 ----
#!/bin/bash
#
! # Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
*** 41,126 ****
fi
# Force autoconf to use bash. This also means we must disable autoconf re-exec.
export CONFIG_SHELL=$BASH
export _as_can_reexec=no
- conf_script_dir="$TOPDIR/make/autoconf"
-
if test "x$CUSTOM_CONFIG_DIR" != x; then
! if test ! -e $CUSTOM_CONFIG_DIR/generated-configure.sh; then
echo "CUSTOM_CONFIG_DIR not pointing to a proper custom config dir."
echo "Error: Cannot continue" 1>&2
exit 1
fi
fi
###
! ### Test that the generated configure is up-to-date
###
! run_autogen_or_fail() {
! if test "x`which autoconf 2> /dev/null | grep -v '^no autoconf in'`" = x; then
! echo "Cannot locate autoconf, unable to correct situation."
! echo "Please install autoconf and run 'bash autogen.sh' to update the generated files."
echo "Error: Cannot continue" 1>&2
exit 1
else
! echo "Running autogen.sh to correct the situation"
! bash $conf_script_dir/autogen.sh
fi
- }
-
- check_autoconf_timestamps() {
- for file in $conf_script_dir/configure.ac $conf_script_dir/*.m4 ; do
- if test $file -nt $conf_script_dir/generated-configure.sh; then
- echo "Warning: The configure source files is newer than the generated files."
- run_autogen_or_fail
fi
! done
if test "x$CUSTOM_CONFIG_DIR" != x; then
! # If custom source configure is available, make sure it is up-to-date as well.
! for file in $conf_script_dir/configure.ac $conf_script_dir/*.m4 $CUSTOM_CONFIG_DIR/*.m4; do
! if test $file -nt $CUSTOM_CONFIG_DIR/generated-configure.sh; then
! echo "Warning: The configure source files is newer than the custom generated files."
! run_autogen_or_fail
fi
! done
fi
}
! check_hg_updates() {
if test "x`which hg 2> /dev/null | grep -v '^no hg in'`" != x; then
conf_updated_autoconf_files=`cd $conf_script_dir && hg status -mard . 2> /dev/null`
! if test "x$conf_updated_autoconf_files" != x; then
! echo "Configure source code has been updated, checking time stamps"
! check_autoconf_timestamps
! elif test "x$CUSTOM_CONFIG_DIR" != x; then
! # If custom source configure is available, make sure it is up-to-date as well.
conf_custom_updated_autoconf_files=`cd $CUSTOM_CONFIG_DIR && hg status -mard . 2> /dev/null`
! if test "x$conf_custom_updated_autoconf_files" != x; then
! echo "Configure custom source code has been updated, checking time stamps"
! check_autoconf_timestamps
fi
fi
fi
}
! # Check for local changes
! check_hg_updates
! if test "x$CUSTOM_CONFIG_DIR" != x; then
! # Test if open configure is newer than custom configure, if so, custom needs to
! # be regenerated. This test is required to ensure consistency with custom source.
! conf_open_configure_timestamp=`grep DATE_WHEN_GENERATED= $conf_script_dir/generated-configure.sh | cut -d"=" -f 2`
! conf_custom_configure_timestamp=`grep DATE_WHEN_GENERATED= $CUSTOM_CONFIG_DIR/generated-configure.sh | cut -d"=" -f 2`
! if test $conf_open_configure_timestamp -gt $conf_custom_configure_timestamp; then
! echo "Warning: The generated configure file contains changes not present in the custom generated file."
! run_autogen_or_fail
fi
fi
# Autoconf calls the configure script recursively sometimes.
# Don't start logging twice in that case
if test "x$conf_debug_configure" = xtrue; then
conf_debug_configure=recursive
fi
--- 41,182 ----
fi
# Force autoconf to use bash. This also means we must disable autoconf re-exec.
export CONFIG_SHELL=$BASH
export _as_can_reexec=no
if test "x$CUSTOM_CONFIG_DIR" != x; then
! custom_hook=$CUSTOM_CONFIG_DIR/custom-hook.m4
! if test ! -e $custom_hook; then
echo "CUSTOM_CONFIG_DIR not pointing to a proper custom config dir."
echo "Error: Cannot continue" 1>&2
exit 1
fi
+ build_support_dir="$CUSTOM_ROOT/.build"
+ else
+ build_support_dir="$TOPDIR/.build"
fi
+ conf_script_dir="$TOPDIR/make/autoconf"
+ generated_script="$build_support_dir/generated-configure.sh"
+
###
! ### Use autoconf to create a runnable configure script, if needed
###
! autoconf_missing_help() {
! APT_GET="`which apt-get 2> /dev/null | grep -v '^no apt-get in'`"
! YUM="`which yum 2> /dev/null | grep -v '^no yum in'`"
! BREW="`which brew 2> /dev/null | grep -v '^no brew in'`"
! CYGWIN="`which cygpath 2> /dev/null | grep -v '^no cygpath in'`"
!
! if test "x$APT_GET" != x; then
! PKGHANDLER_COMMAND="sudo apt-get install autoconf"
! elif test "x$YUM" != x; then
! PKGHANDLER_COMMAND="sudo yum install autoconf"
! elif test "x$BREW" != x; then
! PKGHANDLER_COMMAND="brew install autoconf"
! elif test "x$CYGWIN" != x; then
! PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P autoconf )"
! fi
!
! if test "x$PKGHANDLER_COMMAND" != x; then
! echo "You might be able to fix this by running '$PKGHANDLER_COMMAND'."
! fi
! }
!
! generate_configure_script() {
! if test "x$AUTOCONF" != x; then
! if test ! -x "$AUTOCONF"; then
! echo
! echo "The specified AUTOCONF variable does not point to a valid autoconf executable:"
! echo "AUTOCONF=$AUTOCONF"
echo "Error: Cannot continue" 1>&2
exit 1
+ fi
else
! AUTOCONF="`which autoconf 2> /dev/null | grep -v '^no autoconf in'`"
! if test "x$AUTOCONF" = x; then
! echo
! echo "Autoconf is not found on the PATH, and AUTOCONF is not set."
! echo "You need autoconf to be able to generate a runnable configure script."
! autoconf_missing_help
! echo "Error: Cannot find autoconf" 1>&2
! exit 1
fi
fi
!
! autoconf_version=`$AUTOCONF --version | head -1`
! echo "Using autoconf at ${AUTOCONF} [$autoconf_version]"
if test "x$CUSTOM_CONFIG_DIR" != x; then
! # Generate configure script with custom hooks compiled in.
! custom_patcher='sed -e "s|#CUSTOM_AUTOCONF_INCLUDE|m4_include([$custom_hook])|"'
! else
! custom_patcher='cat'
fi
!
! mkdir -p `dirname $generated_script`
! # Call autoconf but replace the "magic" variable in configure.ac if requested.
! cat $conf_script_dir/configure.ac | eval $custom_patcher | \
! ${AUTOCONF} -W all -I$conf_script_dir - > $generated_script
! rm -rf autom4te.cache
!
! # Sanity check
! if test ! -s $generated_script; then
! echo "Error: Failed to generate runnable configure script" 1>&2
! rm -f $generated_script
! exit 1
fi
}
! test_generated_up_to_date() {
if test "x`which hg 2> /dev/null | grep -v '^no hg in'`" != x; then
conf_updated_autoconf_files=`cd $conf_script_dir && hg status -mard . 2> /dev/null`
! conf_source_files="$conf_script_dir/configure.ac $conf_script_dir/*.m4"
! if test "x$CUSTOM_CONFIG_DIR" != x; then
conf_custom_updated_autoconf_files=`cd $CUSTOM_CONFIG_DIR && hg status -mard . 2> /dev/null`
! conf_custom_source_files="$CUSTOM_CONFIG_DIR/*.m4"
! else
! conf_custom_updated_autoconf_files=""
! conf_custom_source_files=""
fi
+
+ if test "x${conf_updated_autoconf_files}${conf_custom_updated_autoconf_files}" != x; then
+ for file in $conf_source_files $conf_custom_source_files ; do
+ if test $file -nt $generated_script; then
+ return 0
+ fi
+ done
fi
fi
+ return 1
}
! run_autoconf=false
! if test "x$1" = xautogen; then
! # User called us as "configure autogen", so force regeneration
! run_autoconf=true
! shift
! fi
! if test ! -s $generated_script; then
! # Generated script is missing, so we need to create it
! echo "Runnable configure script is not present"
! run_autoconf=true
! else
! # File is present, but is it up to date?
! if test_generated_up_to_date; then
! echo "Runnable configure script is not up to date"
! run_autoconf=true
fi
fi
+ if test "x$run_autoconf" = xtrue; then
+ echo "Generating runnable configure script"
+ generate_configure_script
+ fi
+
# Autoconf calls the configure script recursively sometimes.
# Don't start logging twice in that case
if test "x$conf_debug_configure" = xtrue; then
conf_debug_configure=recursive
fi
*** 238,267 ****
conf_processed_arguments=("--enable-option-checking=fatal" "${conf_processed_arguments[@]}")
###
### Call the configure script
###
- if test "x$CUSTOM_CONFIG_DIR" != x; then
- # Custom source configure available; run that instead
- echo "Running custom generated-configure.sh"
- conf_script_to_run=$CUSTOM_CONFIG_DIR/generated-configure.sh
- else
- echo "Running generated-configure.sh"
- conf_script_to_run=$conf_script_dir/generated-configure.sh
- fi
-
if test "x$conf_debug_configure" != x; then
# Turn on shell debug output if requested (initial or recursive)
set -x
fi
# Now transfer control to the script generated by autoconf. This is where the
# main work is done.
RCDIR=`mktemp -dt jdk-build-configure.tmp.XXXXXX` || exit $?
trap "rm -rf \"$RCDIR\"" EXIT
conf_logfile=./configure.log
! (exec 3>&1 ; ((. $conf_script_to_run "${conf_processed_arguments[@]}" 2>&1 1>&3 ) \
; echo $? > "$RCDIR/rc" ) \
| tee -a $conf_logfile 1>&2 ; exec 3>&-) | tee -a $conf_logfile
conf_result_code=`cat "$RCDIR/rc"`
###
--- 294,314 ----
conf_processed_arguments=("--enable-option-checking=fatal" "${conf_processed_arguments[@]}")
###
### Call the configure script
###
if test "x$conf_debug_configure" != x; then
# Turn on shell debug output if requested (initial or recursive)
set -x
fi
# Now transfer control to the script generated by autoconf. This is where the
# main work is done.
RCDIR=`mktemp -dt jdk-build-configure.tmp.XXXXXX` || exit $?
trap "rm -rf \"$RCDIR\"" EXIT
conf_logfile=./configure.log
! (exec 3>&1 ; ((. $generated_script "${conf_processed_arguments[@]}" 2>&1 1>&3 ) \
; echo $? > "$RCDIR/rc" ) \
| tee -a $conf_logfile 1>&2 ; exec 3>&-) | tee -a $conf_logfile
conf_result_code=`cat "$RCDIR/rc"`
###
*** 282,292 ****
EOT
# Print additional help, e.g. a list of toolchains and JVM features.
# This must be done by the autoconf script.
! ( CONFIGURE_PRINT_ADDITIONAL_HELP=true . $conf_script_to_run PRINTF=printf )
cat <<EOT
Please be aware that, when cross-compiling, the OpenJDK configure script will
generally use 'target' where autoconf traditionally uses 'host'.
--- 329,339 ----
EOT
# Print additional help, e.g. a list of toolchains and JVM features.
# This must be done by the autoconf script.
! ( CONFIGURE_PRINT_ADDITIONAL_HELP=true . $generated_script PRINTF=printf )
cat <<EOT
Please be aware that, when cross-compiling, the OpenJDK configure script will
generally use 'target' where autoconf traditionally uses 'host'.
< prev index next >