diff --git a/Makefile b/Makefile index 6f7d230320..63b26a5a93 100644 --- a/Makefile +++ b/Makefile @@ -412,6 +412,9 @@ win32-just-cs: both: $(MAKE) in-place + $(MAKE) also-cs + +also-cs: $(MAKE) cs CS_SETUP_TARGET=in-place-setup PLT_SETUP_OPTIONS="-D $(PLT_SETUP_OPTIONS)" # ------------------------------------------------------------ diff --git a/racket/src/cs/c/Makefile.in b/racket/src/cs/c/Makefile.in index 271fc855d9..829e6c8589 100644 --- a/racket/src/cs/c/Makefile.in +++ b/racket/src/cs/c/Makefile.in @@ -284,6 +284,7 @@ macos-install: $(MAKE) common-install rm -f $(DESTDIR)$(RKTFWDEST)/Racket rm -rf $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS + if [ @FRAMEWORK_REL_INSTALL@ = yes ] ; then $(RACKET) -cu "$(srcdir)/../../mac/clean-fw.rkt" $(DESTDIR)$(RKTFWDEST) ; fi mkdir -p $(DESTDIR)"$(RKTFWDEST)/Versions/$(FWVERSION)_CS" cp $(RKTFW) $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS/ mkdir -p $(DESTDIR)"$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot" diff --git a/racket/src/cs/c/configure b/racket/src/cs/c/configure index 795853c963..802e24d788 100755 --- a/racket/src/cs/c/configure +++ b/racket/src/cs/c/configure @@ -625,6 +625,7 @@ LIBOBJS CROSS_COMPILE_TARGET_KIND CS_COMPILED_SUBDIR CS_INSTALLED +FRAMEWORK_REL_INSTALL FRAMEWORK_PREFIX FRAMEWORK_INSTALL_DIR SCHEME_CONFIG_ARGS @@ -4668,6 +4669,7 @@ CPPFLAGS="$CPPFLAGS $PREFLAGS" + makefiles="Makefile" diff --git a/racket/src/cs/c/configure.ac b/racket/src/cs/c/configure.ac index 45bdbc4a0c..d9abc14970 100644 --- a/racket/src/cs/c/configure.ac +++ b/racket/src/cs/c/configure.ac @@ -466,6 +466,7 @@ AC_SUBST(MAKE_BUILD_SCHEME) AC_SUBST(SCHEME_CONFIG_ARGS) AC_SUBST(FRAMEWORK_INSTALL_DIR) AC_SUBST(FRAMEWORK_PREFIX) +AC_SUBST(FRAMEWORK_REL_INSTALL) AC_SUBST(CS_INSTALLED) AC_SUBST(CS_COMPILED_SUBDIR) AC_SUBST(CROSS_COMPILE_TARGET_KIND) diff --git a/racket/src/mac/clean-fw.rkt b/racket/src/mac/clean-fw.rkt new file mode 100644 index 0000000000..f6a8b44069 --- /dev/null +++ b/racket/src/mac/clean-fw.rkt @@ -0,0 +1,49 @@ + +;; Used by Mac OS install to clear out old frameworks versions, +;; leaving other variants for the current version intact. + +;; written in #%kernel because it's loaded with -c (ie, no compiled files) + +(module collects-path '#%kernel + (let-values ([(fw-dir) (vector-ref (current-command-line-arguments) 0)]) + (let-values ([(versions-dir) (build-path fw-dir "Versions")]) + (letrec-values ([(clean-files) + (lambda (l) + (if (null? l) + (void) + (if (starts-this-version? (path->string (car l))) + (clean-files (cdr l)) + (begin + (delete-all versions-dir (car l)) + (clean-files (cdr l))))))] + [(delete-all) + (lambda (base p) + (let-values ([(p) (build-path base p)]) + (if (file-exists? p) + (delete-file p) + (if (directory-exists? p) + (begin + (delete-all* p (directory-list p)) + (delete-directory p)) + (void)))))] + [(delete-all*) + (lambda (base l) + (if (null? l) + (void) + (begin + (delete-all base (car l)) + (delete-all* base (cdr l)))))] + [(starts-this-version?) + (lambda (s) + (let-values ([(len) (string-length (version))] + [(s-len) (string-length s)]) + (if (s-len . >= . len) + (if (equal? (version) (substring s 0 len)) + (if (= s-len len) + #t + (if (equal? #\_ (string-ref s len)) + #t + #f)) + #f) + #f)))]) + (clean-files (directory-list versions-dir)))))) diff --git a/racket/src/racket/Makefile.in b/racket/src/racket/Makefile.in index 22eb92be9a..68421b58e9 100644 --- a/racket/src/racket/Makefile.in +++ b/racket/src/racket/Makefile.in @@ -513,7 +513,7 @@ osx-install: rm -f $(DESTDIR)$(MZFWDIR)/Racket rm -rf $(DESTDIR)$(MZFWDIR)/Versions/$(FWVERSION) rm -rf $(DESTDIR)$(MZFWDIR)/Versions/$(FWVERSION)_3m - if [ @FRAMEWORK_REL_INSTALL@ = yes ] ; then rm -rf $(DESTDIR)$(MZFWDIR) ; fi + if [ @FRAMEWORK_REL_INSTALL@ = yes ] ; then @RUN_RACKET_CGC@ -cu "$(srcdir)/../mac/clean-fw.rkt" $(DESTDIR)$(MZFWDIR) ; fi mkdir -p $(DESTDIR)@FRAMEWORK_INSTALL_DIR@ osx-install-cgc: