fix executable creation for cross-installation

This commit is contained in:
Matthew Flatt 2015-08-29 20:12:27 -06:00
parent 6beff43439
commit 0e4d9a68af
3 changed files with 22 additions and 7 deletions

View File

@ -473,9 +473,17 @@ A unit that imports nothing and exports @racket[compiler:embed^].}
@defmodule[compiler/find-exe] @defmodule[compiler/find-exe]
@defproc[(find-exe [gracket? any/c #f] @defproc[(find-exe [#:cross? cross? any/c #f]
[variant (or/c 'cgc '3m) (system-type 'gc)]) [gracket? any/c #f]
[variant (or/c 'cgc '3m) (if cross?
(cross-system-type 'gc)
(system-type 'gc))])
path?]{ path?]{
Finds the path to the @exec{racket} or @exec{gracket} (when Finds the path to the @exec{racket} or @exec{gracket} (when
@racket[gracket?] is true) executable.} @racket[gracket?] is true) executable.
If @racket[cross?] is true, the executable is found for the target
platform in @seclink["cross-system"]{cross-installation mode}.
@history[#:changed "6.2.900.11" @elem{Added the @racket[#:cross?] argument.}]}

View File

@ -1413,7 +1413,7 @@
cmdline)) . < . 80)) cmdline)) . < . 80))
(error 'create-embedding-executable "command line too long: ~e" cmdline)) (error 'create-embedding-executable "command line too long: ~e" cmdline))
(check-collects-path 'create-embedding-executable collects-path collects-path-bytes) (check-collects-path 'create-embedding-executable collects-path collects-path-bytes)
(let ([exe (find-exe mred? variant)]) (let ([exe (find-exe #:cross? #t mred? variant)])
(when verbose? (when verbose?
(eprintf "Copying to ~s\n" dest)) (eprintf "Copying to ~s\n" dest))
(let-values ([(dest-exe orig-exe osx?) (let-values ([(dest-exe orig-exe osx?)

View File

@ -1,9 +1,14 @@
#lang racket/base #lang racket/base
(require setup/dirs (require setup/dirs
setup/variant) setup/variant
setup/cross-system)
(provide find-exe) (provide find-exe)
(define (find-exe [mred? #f] [variant (system-type 'gc)]) (define (find-exe #:cross? [cross? #f]
[mred? #f]
[variant (if cross?
(cross-system-type 'gc)
(system-type 'gc))])
(let* ([base (if mred? (let* ([base (if mred?
(find-lib-dir) (find-lib-dir)
(find-console-bin-dir))] (find-console-bin-dir))]
@ -15,7 +20,9 @@
variant))]) variant))])
(let ([exe (build-path (let ([exe (build-path
base base
(case (system-type) (case (if cross?
(cross-system-type)
(system-type))
[(macosx) [(macosx)
(cond (cond
[(not mred?) [(not mred?)