diff --git a/collects/compiler/commands/exe.rkt b/collects/compiler/commands/exe.rkt index 79254aa879..cdea3a3153 100644 --- a/collects/compiler/commands/exe.rkt +++ b/collects/compiler/commands/exe.rkt @@ -101,22 +101,29 @@ dest (exe-aux)))] [else + (define mod-sym (string->symbol + (format "#%mzc:~a" + (let-values ([(base name dir?) + (split-path source-file)]) + (path->bytes (path-replace-suffix name #"")))))) (mzc:create-embedding-executable dest #:mred? (gui) #:variant (if (3m) '3m 'cgc) #:verbose? (very-verbose) - #:modules (cons `(#%mzc: (file ,source-file) (main)) + #:modules (cons `(#%mzc: (file ,source-file) (main configure-runtime)) (map (lambda (l) `(#t (lib ,l))) (exe-embedded-libraries))) #:configure-via-first-module? #t + #:early-literal-expressions + (parameterize ([current-namespace (make-base-namespace)]) + (define cr-sym (string->symbol (format "~a(configure-runtime)" mod-sym))) + (list + (compile + `(when (module-declared? '',cr-sym) + (dynamic-require '',cr-sym #f))))) #:literal-expression (parameterize ([current-namespace (make-base-namespace)]) - (define mod-sym (string->symbol - (format "#%mzc:~a" - (let-values ([(base name dir?) - (split-path source-file)]) - (path->bytes (path-replace-suffix name #"")))))) (define main-sym (string->symbol (format "~a(main)" mod-sym))) (compile `(begin diff --git a/collects/tests/racket/embed-me22.rkt b/collects/tests/racket/embed-me22.rkt new file mode 100644 index 0000000000..729a45a171 --- /dev/null +++ b/collects/tests/racket/embed-me22.rkt @@ -0,0 +1,6 @@ +#lang racket/kernel + +(printf "This is 22.\n") + +(module configure-runtime racket/kernel + (printf "Configure!\n")) diff --git a/collects/tests/racket/embed.rktl b/collects/tests/racket/embed.rktl index f84cf26392..0a2527aa46 100644 --- a/collects/tests/racket/embed.rktl +++ b/collects/tests/racket/embed.rktl @@ -304,7 +304,15 @@ (path->string (build-path (collection-path "tests" "racket") "embed-me20.rkt"))) (try-exe (mk-dest mred?) "This is 20.\n" mred?) - ;;raco exe --launcher + ;; raco exe on a module with a `configure-runtime' submodule + (system* raco + "exe" + "-o" (path->string (mk-dest mred?)) + (if mred? "--gui" "--") + (path->string (build-path (collection-path "tests" "racket") "embed-me22.rkt"))) + (try-exe (mk-dest mred?) "Configure!\nThis is 22.\n" mred?) + + ;; raco exe --launcher (system* raco "exe" "--launcher"