< 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 >