diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | doc/dejagnu.texi | 5 | ||||
-rw-r--r-- | lib/target.exp | 33 |
3 files changed, 39 insertions, 5 deletions
@@ -1,3 +1,9 @@ +2020-06-19 Tom Tromey <tromey@adacore.com> + + * lib/target.exp (default_target_compile): Add early_flags. + * doc/dejagnu.texi (target_compile procedure): Document + early_flags. + 2020-06-02 Jacob Bachmeyer <jcb62281+dev@gmail.com> PR 41647 diff --git a/doc/dejagnu.texi b/doc/dejagnu.texi index bb386e8..fd7f16f 100644 --- a/doc/dejagnu.texi +++ b/doc/dejagnu.texi @@ -10,7 +10,7 @@ @copying @c man begin COPYRIGHT -Copyright @copyright{} 1992-2019 Free Software Foundation, Inc. +Copyright @copyright{} 1992-2020 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -4595,6 +4595,9 @@ this option is given multiple times, only the last use is significant. @item compiler=@var{command} Override the defaults and use @var{command} as the compiler. If this option is given multiple times, only the last use is significant. +@item early_flags=@var{flags} +Prepend @var{flags} to the set of arguments to be passed to the compiler. +Multiple uses of this option specify additional arguments. @item additional_flags=@var{flags} Add @var{flags} to the set of arguments to be passed to the compiler. Multiple uses of this option specify additional arguments. diff --git a/lib/target.exp b/lib/target.exp index d240007..c98fbd0 100644 --- a/lib/target.exp +++ b/lib/target.exp @@ -311,6 +311,11 @@ proc default_target_compile {source destfile type options} { error "Must supply an output filename for the compile to default_target_compile" } + set early_flags "" + # linker_opts_order is one of "sources-then-flags", "flags-then-sources". + # The order matters for things like -Wl,--as-needed. The default is to + # preserve existing behavior. + set linker_opts_order "sources-then-flags" set add_flags "" set libs "" set compiler_type "c" @@ -407,6 +412,10 @@ proc default_target_compile {source destfile type options} { regsub "^compiler=" $i "" tmp set compiler $tmp } + if {[regexp "^early_flags=" $i]} { + regsub "^early_flags=" $i "" tmp + append early_flags " $tmp" + } if {[regexp "^additional_flags=" $i]} { regsub "^additional_flags=" $i "" tmp append add_flags " $tmp" @@ -634,10 +643,26 @@ proc default_target_compile {source destfile type options} { # This is obscure: we put SOURCES at the end when building an # object, because otherwise, in some situations, libtool will # become confused about the name of the actual source file. - if {$type eq "object"} { - set opts "$add_flags $sources" - } else { - set opts "$sources $add_flags" + switch $type { + "object" { + set opts "$early_flags $add_flags $sources" + } + "executable" { + switch $linker_opts_order { + "flags-then-sources" { + set opts "$early_flags $add_flags $sources" + } + "sources-then-flags" { + set opts "$early_flags $sources $add_flags" + } + default { + error "Invalid value for board_info linker_opts_order" + } + } + } + default { + set opts "$early_flags $sources $add_flags" + } } if {[isremote host]} { |