diff --git a/README.md b/README.md index 1da02fea01878..e919f3329fe2a 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ To easily build on windows we can use [MSYS2](http://sourceforge.net/projects/ms 3. With that now start `mingw32_shell.bat` from where you installed MSYS2 (i.e. `C:\msys`). 4. From there just navigate to where you have Rust's source code, configure and build it: - $ ./configure --build=i686-pc-mingw32 + $ ./configure $ make && make install [repo]: https://github.com/rust-lang/rust diff --git a/configure b/configure index 636d50276ff54..bb874809d8ee2 100755 --- a/configure +++ b/configure @@ -299,13 +299,19 @@ case $CFG_OSTYPE in CFG_OSTYPE=apple-darwin ;; - MINGW32*) + MINGW*) + # msys' `uname` does not print gcc configuration, but prints msys + # configuration. so we cannot believe `uname -m`: + # msys1 is always i686 and msys2 is always x86_64. + # instead, msys defines $MSYSTEM which is MINGW32 on i686 and + # MINGW64 on x86_64. + CFG_CPUTYPE=i686 CFG_OSTYPE=pc-mingw32 - ;; - - MINGW64*) - # msys2, MSYSTEM=MINGW64 - CFG_OSTYPE=w64-mingw32 + if [ "$MSYSTEM" = MINGW64 ] + then + CFG_CPUTYPE=x86_64 + CFG_OSTYPE=w64-mingw32 + fi ;; # Thad's Cygwin identifers below diff --git a/src/etc/maketest.py b/src/etc/maketest.py index 0e2c1e77ab4c5..b46a3b036005c 100644 --- a/src/etc/maketest.py +++ b/src/etc/maketest.py @@ -15,13 +15,14 @@ # msys1/msys2 automatically converts `/abs/path1:/abs/path2` into # `c:\real\abs\path1;c:\real\abs\path2` (semicolons) if shell thinks # the value is list of paths. +# (if there is only one path, it becomes `c:/real/abs/path`.) # this causes great confusion and error: shell and Makefile doesn't like # windows paths so it is really error-prone. revert it for peace. def normalize_path(v): - # c:\path -> /c/path - if ':\\' in v: - v = '/' + v.replace(':\\', '/') v = v.replace('\\', '/') + # c:/path -> /c/path + if ':/' in v: + v = '/' + v.replace(':/', '/') return v