From cdf0dc8ed2a3d45734aa569125cb8a43efd0eedc Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 1 Nov 2014 08:09:43 -0600 Subject: [PATCH] Windows: MinGW fixes --- INSTALL.txt | 20 ++++++++++++-------- racket/src/configure | 2 +- racket/src/gracket/Makefile.in | 4 ++-- racket/src/racket/configure.ac | 2 +- racket/src/racket/src/file.c | 3 ++- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/INSTALL.txt b/INSTALL.txt index 055c1bf554..e6b2b6668b 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -52,15 +52,19 @@ Quick Instructions: In-place Build On Unix, `make' (or `make in-place') creates a build in the "racket" directory. -On Mac OS X, see the notes below on git submodules, and then `make' +On Mac OS X, see the notes below on Git submodules, and then `make' (or `make in-place') creates a build in the "racket" directory. On Windows with Microsoft Visual Studio (any version between 2008/9.0 -and 2013/12.0), see the notes below on git submodules, and then `nmake +and 2013/12.0), see the notes below on Git submodules, and then `nmake win32-in-place' creates a build in the "racket" directory. For information on configuring your command-line environment for Visual Studio, see "racket/src/worksp/README". +On Windows with MinGW, see the notes below on Git submodules, and then +`make PLAIN_RACkET=racket/racket', since MinGW uses Unix-style tools +but generates a Windows-layout Racket build. + In all cases, an in-place build includes (via links) packages that are in the "pkgs" directory. @@ -74,7 +78,7 @@ On Unix, `make unix-style PREFIX=' builds and installs into with binaries in "/bin", packages in "/share/racket/pkgs", documentation in "/share/racket/doc", etc. -On Mac OS X, see the notes below on git submodules, and then `make +On Mac OS X, see the notes below on Git submodules, and then `make unix-style PREFIX=' builds and installs into "" with binaries in "/bin", packges in "/share/pkgs", documentation in "/doc", etc. @@ -91,7 +95,7 @@ assembles the installation in "". Then, copy the content of See "More Instructions: Building Racket" below for more information. -git Submodules (Mac OS X and Windows) +Git Submodules (Mac OS X and Windows) ===================================== On Mac OS X and Windows, you'll need native-library packages in the @@ -100,7 +104,7 @@ install. The "native-pkgs" directory is treated in the same way as "pkgs"; for example, in-place build uses links into the "native-pkgs" directory. -The "native-pkgs" directory is a git submodule, so you'll need +The "native-pkgs" directory is a Git submodule, so you'll need git submodule init git submodule update @@ -132,7 +136,7 @@ Racket distribution, plus some additional packages (such as tests). A copies packages out of "pkgs" to install them. Either way, if you're building on Mac OS X or Windows, be sure to -start with "git Submodules", above. +start with "Git Submodules", above. To install a subset of the packages in "pkgs", supply `PKGS' value to `make'. For example, @@ -238,7 +242,7 @@ scope. Packages are linked with the `--no-setup' flag (effectively), which means that a `raco setup' is needed after installing links. Native-library packages provide (on Mac OS X and Windows) pre-built -native libraries, such as Cairo. They are available through a git +native libraries, such as Cairo. They are available through a Git submodule "native-pkgs", so use `git submodule init' and `git submodule update' as needed. @@ -371,7 +375,7 @@ For snapshot management, the destination of the files generated for snapshots. The configuration file can use `(current-stamp)' to get a string that represents the current build, and then use the string both for `#:dist-base-url' and `#:site-dest'. Normally, the stamp string is -a combination of the date and git commit hash. +a combination of the date and Git commit hash. Snapshot management includes creating an "index.html" file in the snapshots directory (essentially a copy of the snapshot's own diff --git a/racket/src/configure b/racket/src/configure index 48fa5f90a6..6fefc7d242 100755 --- a/racket/src/configure +++ b/racket/src/configure @@ -4563,7 +4563,7 @@ case "$host_os" in MZINSTALLBINDIR="${MZINSTALLBINDIR}/.." EXE_SUFFIX=".exe" COLLECTS_PATH="collects" - CONFIG_PATH="lib" + CONFIG_PATH="etc" skip_iconv_check=yes check_for_mprotect=no diff --git a/racket/src/gracket/Makefile.in b/racket/src/gracket/Makefile.in index de057e31ab..0801095bb3 100644 --- a/racket/src/gracket/Makefile.in +++ b/racket/src/gracket/Makefile.in @@ -205,7 +205,7 @@ install-lib-cgc-wx_xt: install-wx_xt-cgc: $(MAKE) @MRLIBINSTALL@-cgc-wx_xt cd ..; $(ICP) gracket/gracket@CGC@ "$(DESTDIR)$(libpltdir)/gracket@CGC_INSTALLED@" - cd ..; @STRIP_DEBUG@ "$(DESTDIR)$(libpltdir)/gracket@CGC_INSTALLED@" + cd ..; @STRIP_DEBUG@ "$(DESTDIR)$(libpltdir)/gracket@CGC_INSTALLED@@EXE_SUFFIX@" @RUN_RACKET_CGC@ $(SELF_RACKET_FLAGS) -cu "$(srcdir)/../racket/collects-path.rkt" @DIRCVTPRE@"$(DESTDIR)$(libpltdir)/gracket@CGC_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ @COLLECTS_PATH@ @CONFIG_PATH@ install-wx_xt-cgc-final: @@ -220,7 +220,7 @@ install-lib-3m-wx_xt: install-wx_xt-3m: $(MAKE) @MRLIBINSTALL@-3m-wx_xt cd ..; $(ICP) gracket/gracket@MMM@ "$(DESTDIR)$(libpltdir)/gracket@MMM_INSTALLED@" - cd ..; @STRIP_DEBUG@ "$(DESTDIR)$(libpltdir)/gracket@MMM_INSTALLED@" + cd ..; @STRIP_DEBUG@ "$(DESTDIR)$(libpltdir)/gracket@MMM_INSTALLED@@EXE_SUFFIX@" @RUN_RACKET_MMM@ $(SELF_RACKET_FLAGS) -cu "$(srcdir)/../racket/collects-path.rkt" @DIRCVTPRE@"$(DESTDIR)$(libpltdir)/gracket@MMM_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ @COLLECTS_PATH@ @CONFIG_PATH@ install-wx_xt-3m-final: diff --git a/racket/src/racket/configure.ac b/racket/src/racket/configure.ac index 2895aa1f38..6303689fd8 100644 --- a/racket/src/racket/configure.ac +++ b/racket/src/racket/configure.ac @@ -699,7 +699,7 @@ case "$host_os" in MZINSTALLBINDIR="${MZINSTALLBINDIR}/.." EXE_SUFFIX=".exe" COLLECTS_PATH="collects" - CONFIG_PATH="lib" + CONFIG_PATH="etc" skip_iconv_check=yes check_for_mprotect=no AC_DEFINE(HAVE_STDINT_H,1,[Have stdint.h]) diff --git a/racket/src/racket/src/file.c b/racket/src/racket/src/file.c index cb63119e7c..15f511e0b6 100644 --- a/racket/src/racket/src/file.c +++ b/racket/src/racket/src/file.c @@ -2221,6 +2221,7 @@ typedef struct mz_REPARSE_DATA_BUFFER { } mz_REPARSE_DATA_BUFFER; #define mzFILE_FLAG_OPEN_REPARSE_POINT 0x200000 +#define mzFSCTL_GET_REPARSE_POINT 0x900A8 static char *UNC_readlink(const char *fn) { @@ -2247,7 +2248,7 @@ static char *UNC_readlink(const char *fn) while (1) { buffer = (char *)scheme_malloc_atomic(size); - if (DeviceIoControlProc(h, FSCTL_GET_REPARSE_POINT, NULL, 0, buffer, size, + if (DeviceIoControlProc(h, mzFSCTL_GET_REPARSE_POINT, NULL, 0, buffer, size, &got, NULL)) break; else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {