Re: Suggestions for librsvg's COMPILING.md



On Sat, 2017-12-02 at 13:51 -0500, David Michael wrote:

In librsvg's COMPILING.md, there are two inconsistencies around
cross-compiling.

  * The option --target=TRIPLE is passed to cargo, not --host.
  * RUST_TARGET_PATH should be set for make, not configure.

Ah, thanks for noticing!  I've pushed this fix.

An alternative to writing a target JSON file could be to override
CARGO_TARGET_ARGS and RUST_TARGET_SUBDIR (if RUST_LIB used the
variable) when a compatible builtin target is available.  For
example:

    ./configure --host=x86_64-redhat-linux-gnu ...
    make CARGO_TARGET_ARGS=--target=x86_64-unknown-linux-gnu ...

You mean, in Makefile.am instead of

RUST_LIB=@abs_top_builddir@/rust/target/@RUST_TARGET_SUBDIR@/librsvg_internals.a

Something like

RUST_TARGET_SUBDIR=@RUST_TARGET_SUBDIR@
RUST_LIB=@abs_top_builddir@/rust/target/$(RUST_TARGET_SUBDIR)/librsvg_internals.a

?

(I haven't even tested this; just trying to see if we are thinking of
the same thing.)

Is that worth maybe adding a --with-rust-target option to configure
that defaults to $host when cross-compiling?  (I didn't think of that
for the cross-compiling patch since I was only building for a new
target with no builtin support.)

Hmmmmm, I'm not sure.  Would these be the two cases then?

1. Rust supports the same --host=TRIPLE out of the box, in the form of 
"cargo --target=TRIPLE".

2. Rust doesn't know the --host=TRIPLE.  You'd like an easier way to
pass the json file, or a compatible triple, and that would be the 
--with-rust-target option?

I haven't played with cross compilation at all, so if you want to own
this bit and patch the build infrastructure, feel free to do it :)

As a side note, here is one way to generate a JSON spec from a
similar
builtin target.  It may not be helpful including this in
documentation
since it uses unstable options, so I'm just throwing it out there.

    RUSTC_BOOTSTRAP=1 rustc -Z unstable-options \
        --print=target-spec-json \
        --target=x86_64-unknown-linux-gnu |
    sed -e /is-builtin/d -e s/unknown/redhat/g \
        > "${RUST_TARGET_PATH%%:*}/x86_64-redhat-linux-gnu.json"

Interesting.  For now I want to keep librsvg compiling on rust stable,
although I have implicitly updated what "stable" means in the past :) 
No nightly features, I guess.




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]