diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2024-04-08 18:33:38 +0200 |
---|---|---|
committer | Thomas Schwinge <tschwinge@baylibre.com> | 2024-04-15 13:03:35 +0200 |
commit | 3e1e73fc99584440e5967577f2049573eeaf4596 (patch) | |
tree | 93d83541e76e625f388ad305c7c7c77dee82499e | |
parent | e3fda76af4f342ad1ba8bd901a72d811e8357e99 (diff) | |
download | gcc-3e1e73fc99584440e5967577f2049573eeaf4596.zip gcc-3e1e73fc99584440e5967577f2049573eeaf4596.tar.gz gcc-3e1e73fc99584440e5967577f2049573eeaf4596.tar.bz2 |
build: Check for cargo when building rust language
Prevent rust language from building when cargo is
missing.
config/ChangeLog:
* acx.m4: Add a macro to check for rust
components.
ChangeLog:
* configure: Regenerate.
* configure.ac: Emit an error message when cargo
is missing.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
-rw-r--r-- | config/acx.m4 | 11 | ||||
-rwxr-xr-x | configure | 117 | ||||
-rw-r--r-- | configure.ac | 18 |
3 files changed, 146 insertions, 0 deletions
diff --git a/config/acx.m4 b/config/acx.m4 index 7efe98a..3c5fe67 100644 --- a/config/acx.m4 +++ b/config/acx.m4 @@ -424,6 +424,17 @@ else fi ]) +# Test for Rust +# We require cargo and rustc for some parts of the rust compiler. +AC_DEFUN([ACX_PROG_CARGO], +[AC_REQUIRE([AC_CHECK_TOOL_PREFIX]) +AC_CHECK_TOOL(CARGO, cargo, no) +if test "x$CARGO" != xno; then + have_cargo=yes +else + have_cargo=no +fi]) + # Test for D. AC_DEFUN([ACX_PROG_GDC], [AC_REQUIRE([AC_CHECK_TOOL_PREFIX]) @@ -714,6 +714,7 @@ PGO_BUILD_GEN_CFLAGS HAVE_CXX11_FOR_BUILD HAVE_CXX11 do_compare +CARGO GDC GNATMAKE GNATBIND @@ -5786,6 +5787,104 @@ else have_gdc=no fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cargo", so it can be a program name with args. +set dummy ${ac_tool_prefix}cargo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CARGO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CARGO"; then + ac_cv_prog_CARGO="$CARGO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CARGO="${ac_tool_prefix}cargo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CARGO=$ac_cv_prog_CARGO +if test -n "$CARGO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CARGO" >&5 +$as_echo "$CARGO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CARGO"; then + ac_ct_CARGO=$CARGO + # Extract the first word of "cargo", so it can be a program name with args. +set dummy cargo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CARGO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CARGO"; then + ac_cv_prog_ac_ct_CARGO="$ac_ct_CARGO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CARGO="cargo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CARGO=$ac_cv_prog_ac_ct_CARGO +if test -n "$ac_ct_CARGO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CARGO" >&5 +$as_echo "$ac_ct_CARGO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CARGO" = x; then + CARGO="no" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CARGO=$ac_ct_CARGO + fi +else + CARGO="$ac_cv_prog_CARGO" +fi + +if test "x$CARGO" != xno; then + have_cargo=yes +else + have_cargo=no +fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to compare bootstrapped objects" >&5 $as_echo_n "checking how to compare bootstrapped objects... " >&6; } if ${gcc_cv_prog_cmp_skip+:} false; then : @@ -9099,6 +9198,24 @@ $as_echo "$as_me: WARNING: --enable-host-shared required to build $language" >&2 ;; esac + # Disable Rust if cargo is unavailable. + case ${add_this_lang}:${language}:${have_cargo} in + yes:rust:no) + # Specifically requested language; tell them. + as_fn_error $? "cargo is required to build $language" "$LINENO" 5 + ;; + all:rust:no) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cargo is required to build $language" >&5 +$as_echo "$as_me: WARNING: cargo is required to build $language" >&2;} + add_this_lang=unsupported + ;; + *:rust:no) + # Silently disable. + add_this_lang=unsupported + ;; + esac + + # Disable a language that is unsupported by the target. case "${add_this_lang}: $unsupported_languages " in no:*) ;; diff --git a/configure.ac b/configure.ac index 1a19c07..a0191e5 100644 --- a/configure.ac +++ b/configure.ac @@ -1411,6 +1411,7 @@ fi ACX_PROG_GNAT ACX_PROG_GDC +ACX_PROG_CARGO ACX_PROG_CMP_IGNORE_INITIAL AC_ARG_ENABLE([bootstrap], @@ -2305,6 +2306,23 @@ directories, to avoid imposing the performance cost of ;; esac + # Disable Rust if cargo is unavailable. + case ${add_this_lang}:${language}:${have_cargo} in + yes:rust:no) + # Specifically requested language; tell them. + AC_MSG_ERROR([cargo is required to build $language]) + ;; + all:rust:no) + AC_MSG_WARN([cargo is required to build $language]) + add_this_lang=unsupported + ;; + *:rust:no) + # Silently disable. + add_this_lang=unsupported + ;; + esac + + # Disable a language that is unsupported by the target. case "${add_this_lang}: $unsupported_languages " in no:*) ;; |