{"action":"created","comment":{"url":"https://api.github.com/repos/scipy/scipy.org/pulls/comments/55326104","id":55326104,"diff_hunk":"@@ -5,374 +5,221 @@ Building From Source on Windows\n .. contents::\n    :local:\n \n-Supported Compilers\n--------------------\n-\n-As is pointed out in the general build guidelines, building NumPy and\n-SciPy libraries requires a C compiler. Furthermore, a Fortran 77\n-compiler is needed to build SciPy and to build a LAPACK library for\n-use in NumPy and SciPy.\n-\n-The MinGW_ project provides windows versions of the free GNU compilers gcc and\n-g77. These are the compilers most SciPy developers work with and hence the\n-compilers that are supported the best by the SciPy build scripts.\n-\n-Cygwin_ is a POSIX compatible Linux-like environment for Windows. It is a very\n-useful tool as it allows to compile and use many Unix tools without\n-modification. We'll need it for the compilation of ATLAS. If selected during\n-installation, Cygwin also makes available its own versions of the MinGW\n-compilers (by the command line option \"-mno-cygwin\" to gcc), which produce\n-identical code. There is no need to install the separate MinGW distribution\n-when Cygwin is already installed.\n-\n-SciPy also supports **Microsoft Visual C++** (MSVC) as the C/C++ compiler\n-extension modules for the official binary distribution of Python, the runtime\n-libraries have to be compatible. As the official versions of Python 2.3/2.4/2.5\n-are compiled with Visual Studio 2003 (Visual Studio 7.1) and hence linked to\n-msvcr71, this leaves only MSVC 7.1 to build extensions for these Python\n-versions. This pretty much excludes the free (as in beer) `Visual Studio 2005`_\n-Express, at least if one doesn't also want to build Python (and all other\n-extension modules) from sources with MSVC 8 - which currently is not offically\n-supported. Combining MSVC with G77 from MinGW or Cygwin is supported, as is the\n-combination with other Fortran compilers.\n-\n-.. _MinGW: http://www.mingw.org/\n-.. _Cygwin: http://www.cygwin.com/\n-.. _Visual Studio 2005: \n+Overview\n+--------\n+\n+Compared to OSX and Linux, building NumPy and SciPy on Windows is difficult,\n+largely due to the lack of compatible, open-source libraries like LAPACK_ or\n+ATLAS_ that are necessary to build both libraries and have them perform\n+relatively well. You can't ``sudo apt-get install`` everything like you\n+can on the other two platforms.\n+\n+Fortunately, a lot of work has been done recently to rectify this situation.\n+Projects such as OpenBLAS_ and Mingwpy_ are under active development to develop\n+open-source toolchains that would allow Windows users to build and develop with\n+NumPy and SciPy from source without issues of financial, platform, and licensing constraints.\n+\n+This document will attempt to provide a general summary of the available options that\n+users can currently avail themselves to if they so choose to build these libraries from\n+source. However, in light of all the work currently being performed **do not expect**\n+these instructions to be accurate in the long-run and be sure to check up on any of the\n+open source projects mentioned for the most up-to-date information. For more information\n+on all of these projects, the Mingwpy_ website is an **excellent** source of more in-depth\n+information than this document will provide.\n+\n+.. _Mingwpy: http://mingwpy.github.io/\n+.. _ATLAS: http://math-atlas.sourceforge.net/\n+.. _OpenBLAS: https://github.com/xianyi/OpenBLAS\n+.. _LAPACK: http://www.netlib.org/lapack/\n+\n+Python Libraries\n+----------------\n+\n+For development purposes, you will need several Python libraries when building NumPy and\n+SciPy. These can be installed by running the command ``(sudo) pip install {library}``.\n+The libraries needed are:\n+\n+1) **Cython** (compiling ``.pyx`` files)\n+2) **Nose** (running unit tests)\n+3) **Tempita** (SciPy only)\n \n-Downloading and installing a compiler\n--------------------------------------\n+Compilers\n+---------\n \n-Generally you only need one C compiler (and one Fortran\n-compiler). Cygwin is required if you want to build ATLAS\n-yourself. Unless you are building from released source packages, the\n-`Cython <http://cython.org/>`__ compiler is also needed.\n+In order to build NumPy and SciPy, two compilers are needed: a C compiler\n+and a Fortran compiler. The latter is technically not necessary for NumPy,\n+but it is **strongly encouraged** to have one in order to build libraries like\n+LAPACK_ or ATLAS_ that will significantly improve performance. For the remainder\n+of this document, given the performance differences, **NumPy will be treated as if\n+it actually does require such libraries, hence necessitating a Fortran compiler.**\n \n MinGW\n #####\n \n-The easiest way to install MinGW is to use the MinGW installer from here. The\n-current (as of 3 August, 06) candidate distribution with gcc and g77 3.4.5 is\n-reported to work best. After installation you need to put the MinGW\\bin\n-directory on the path.\n+The Mingw-w64_ project provides Windows versions of the free GNU compilers **gcc** and\n+**gfortran**. These are the compilers most NumPy SciPy developers work with and hence\n+the compilers that are supported the best by build scripts in both libraries. Also,\n+as indicated in the name, they also form the basis of the ongoing Mingwpy_ project\n+mentioned previously. Thus, from a long-term perspective, these compilers may be\n+the optimal ones to use. Installation instructions can be found `here <http://mingw-w64.org/doku.php/download>`__.\n+\n+.. _Mingw-w64: http://mingw-w64.org/doku.php/\n \n Cygwin\n ######\n \n-Cygwin can be conveniently installed and updated with their \n-`convenient installer <http://www.cygwin.com/setup.exe>`.\n-\n-Make sure that the ``gcc`` and ``gcc-mingw`` packages in the \"Devel\" section\n-are selected. If you want to use the official Python distribution (recommended)\n-and don't want to get confused, do not select the Python option in the Cygwin\n-installer. The Cygwin tools should be used from within the Cygwin ``bash`` \n-shell available from the start menu after installation.  See this  \n-`tutorial <http://cplus.about.com/od/compilersandides/l/aa061304a.htm>`_\n-explaining the basics of Cygwin.\n-\n-Visual Studio\n-#############\n-\n-The installation is quite straightforward; see the documentation provided by\n-Microsoft for additional help. The command line tools are most conveniently\n-used from the Visual Studio command prompt available from  the start menu.\n+A POSIX compatible Linux-like environment for Windows, Cygwin_ is a very useful tool,\n+as it allows to compile and use many Unix tools without modification. It can also be\n+used to build libraries ATLAS_, which at the moment is very Unix-oriented, although\n+that may be subject to change as we will discuss later on. Installation instructions\n+for Cygwin_ can be found `here <https://cygwin.com/install.html>`__. When using the\n+installer (either 32-bit or 64-bit depending on your computer), **make sure to search\n+for and select** packages with the keyword **gcc** in them. **Note that if you use Cygwin's\n+gcc, anything built with it can only run in a Cygwin environment and not in your native\n+Windows environment.**\n+\n+In addition, Cygwin also offers its own **identical** packages for Mingw-w64_ that you can\n+install by searching from **mingw64** in the packages and then selecting those that contain\n+**i686** if you're using 32-bit or **x86_64** if you're using 64-bit. If you choose this option,\n+**there is no need to have a separate installation of Mingw-w64.** This is because anything built\n+with Mingw-w64_ will be cross-platform compatible, so the build will work in your native Windows\n+environment as well.\n+\n+Finally, the installer may also miss several important DLL's necessary for proper function, as\n+pointed out `here <http://stackoverflow.com/questions/32897685/cannot-compile-anything-with-gcc-on-cygwin32-missing-cygisl-10-dll>`__,\n+so double check that you have them marked as well during installation. Note that\n+even if you forget to install a package, you can always run the installer again to\n+install additional ones.\n \n-Building NumPy with the Intel Math Kernel Library (MKL)\n--------------------------------------------------------\n+.. _Cygwin: http://www.cygwin.com/\n \n-.. TODO: What about SciPy? Ask DavidC\n-\n-NumPy can be built using the optimized BLAS and LAPACK libraries within \n-Intel's Math Kernel Library. MKL's implementation of BLAS and LAPACK are \n-apparently better optimized for Intel chips than ATLAS's implementation.\n-\n-Download the trial of MKL for Windows and install it. The trial is 30 days, \n-but it's currently unknown what will happen to the library and header files \n-on your hard drive after that period has expired.\n-\n-You can use MKL to build with MSVC7.1, the same compiler used by Python \n->= 2.4. Make sure you have Visual Studio 2003 installed. \n-\n-.. TODO: will other compilers work? ask DavidC\n-\n-Once you've checked out the source for NumPy, create an empty file called\n-``.numpy-site.cfg`` in your home directory (something like ``C:\\Documents and\n-Settings\\username``). Windows Explorer might not allow you to create a file\n-starting with \".\", so you may have to use the command line to rename it. Make\n-sure you have a ``HOME`` user environment variable that points to your home\n-directory (see Control Panel/System/Advanced/Environment Variables). Add the\n-following to the file, substituting your MKL installation path where\n-appropriate::\n-\n-    # config file for building numpy on ia32 platform,\n-    # using Intel's Math Kernel Library for win32\n-    # builds successfully with MSVC7.1\n-    # replace C:\\Program Files\\Intel\\MKL\\9.0 with your Intel MKL install path\n-    \n-    [mkl]\n-    include_dirs = C:\\Program Files\\Intel\\MKL\\9.0\\include\n-    library_dirs = C:\\Program Files\\Intel\\MKL\\9.0\\ia32\\lib\n-    mkl_libs = mkl_ia32, mkl_c_dll, libguide40\n-    lapack_libs = mkl_lapack\n-    # mkl_c or mkl_c_dll? either seem to work:\n-    # mkl_c : \"cdecl interface library\"\n-    # mkl_c_dll : \"cdecl interface library for dynamic library\"\n-    # libguide or libguide40? either seem to work:\n-    # libguide.lib : \"Static threading library\"\n-    # libguide40.lib : \"Interface library for dynamic threading library\"\n-\n-Check that the specified libraries can indeed be found by running::\n-\n-    python setup.py config\n-\n-from the root NumPy source directory. Then, (as of numpy r3726) all that's\n-required is running::\n-\n-    python setup.py install\n-\n-This should build NumPy without errors and install it to your site-packages\n-directory. Make sure you test your NumPy installation by running \n-:func:`numpy.test`.\n-\n-.. TODO: Add SciPy instructions for MKL\n-\n-BLAS, LAPACK and ATLAS\n-----------------------\n-\n-NumPy and SciPy can be built with support for optimized BLAS_ and LAPACK_\n-libraries (the supported BLAS interface is the CBLAS interface, not the\n-Fortran 77 interface).\n-\n-.. _BLAS: http://www.netlib.org/blas/faq.html\n-.. _LAPACK: http://www.netlib.org/lapack/faq.html\n-\n-Pre-built versions of the ATLAS libraries are available for several \n-processors:\n-\n-.. TODO: Add links\n-\n- * Pentium 2; early Athlon chips\n- * Pentium 3/SSE (possibly Athlon XP model 6 and later AMD chips)\n- * Pentium 4/SSE2\n-\n-Building ATLAS\n-##############\n-\n-ATLAS_ is the most widely available, free BLAS implementation on Windows. It \n-is well supported by NumPy and SciPy.\n-\n-**IMPORTANT:** NumPy and SciPy in Windows can currently only make use of CBLAS\n-and LAPACK as *static libraries* - DLLs are not supported. \n-\n-If you don't yet have optimized static CBLAS and LAPACK libraries, you can\n-easily build them from within Cygwin (LAPACK also can just as easily be built\n-with MinGW).\n-\n- 1. Download and extract the most recent version of the ATLAS sources.\n-    Currently the most stable \"unstable\" version is 3.7.11. A new \"stable\"\n-    version is expected to be released this summer, the 3.6.0 version is\n-    already pretty dated. \n- 2. To avoid `SSE3 problems`_ on some platforms, deactivate SSE3 by replacing\n-    line 77 in ``ATLAS/CONFIG/probe_SSE3.c`` with  \n-\n-    ::\n-        \n-        /* if (testv3[0] != 3.0 || testv3[1] != 7.0) */ \n-    \n- 3. Execute make in the Cygwin command prompt in the Atlas root directory. In\n-    Cygwin the Windows drives ``C:\\``, ``D:\\``, etc. are mapped to\n-    ``/cygdrive/c/``, ``/cygdrive/d/``, etc. \n- 4. Generally accept the default options by hitting return. Select the correct\n-    processor. Do not activate POSIX threads. Use the express installation.\n-    You do not need to specify custom compiler flags, the ``-mno-cygwin`` does\n-    not make a difference at this stage. Accept the architecture defaults. If\n-    you do not know your processor type, downloading and running `CPU-Z`_ may\n-    help.\n- 5. As prompted by the config script, execute  ``make install\n-    arch=YOUR_ARCHITECTURE`` . This can take anywhere from 15 minutes to\n-    several hours, depending on your setup. \n- 6. Execute ``make sanity_test arch=YOUR_ARCHITECTURE``  and hope that no tests\n-    fail (the message ``[sanity_test] Error 1 (ignored)`` is to be expected). \n-\n-Now copy the files ``libatlas.a``, ``libcblas.a``, ``libf77blas.a`` and\n-``liblapack.a`` from ``ATLAS\\lib\\YOUR_ARCHITECTURE`` to a directory of your\n-choice, for example ``C:\\BLASLAPACKLIBS``. \n-\n-Building LAPACK\n+Microsoft Visual C++ (MSVC)\n+###########################\n+\n+NumPy and SciPy both support MSVC as the C/C++ compiler extension modules for the official\n+binary distribution of Python. However, make sure that you download the correct version!\n+For example, Python 2.7.x is compiled with Visual Studio 2008, and Python 3.5.1 is compiled\n+with Visual Studio 2015. If you are using Python 2.7.x, you should visit this link `here <https://www.microsoft.com/en-gb/download/details.aspx?id=44266>`__\n+to download the **Microsoft Visual C++ Compiler for Python 2.7**. If you are using Python 3.4.x and Windows 7, you\n+should visit this link `here <https://www.microsoft.com/en-us/download/details.aspx?id=8279>`__ and download the\n+**Microsoft Windows SDK for Windows 7**. If you are using Python 3.5.x, you should obtain the compiler via their `Visual Studio`_\n+offering and download the **Community Edition**. If none of these configurations match your own, you will need to\n+use one of the other build options described above. Please be aware that this option does does not come with a Fortran compiler,\n+and the only one currently known to be compatible with MSVC is the **Intel Fortran compiler (ifort)**, which itself\n+is difficult to obtain as will be explained in the discussion about the :ref:`MKL Library`.\n+\n+.. _Visual Studio: https://www.visualstudio.com/\n+\n+Libraries\n+---------\n+\n+As mentioned in the overview, certain libraries (math libraries to be specific) are necessary\n+for a high performing NumPy and for building SciPy, and they are BLAS_ and LAPACK_. There are\n+many options available, in particular for BLAS_, and we will discuss several of the options below.\n+\n+.. _BLAS: http://www.netlib.org/blas/\n+\n+.. _`MKL Library`:\n+\n+Intel Math Kernel Library (MKL)\n+###############################\n+\n+Intel has provided its own implementations of BLAS_ and LAPACK_, and they are by far some\n+of the best performing libraries for **both** NumPy and SciPy. Unfortunately, they are not free and\n+also require their own Fortran compiler for these libraries to work. While it is possible to obtain\n+the libraries for free via their Community License (you can click `here <https://software.intel.com/sites/campaigns/nest/>`__\n+to learn and click `here <https://registrationcenter.intel.com/en/forms/?productid=2558&licensetype=2>`__ to register),\n+it does not come with their Fortran compiler, **ifort**, which is necessary for building both the NumPy and SciPy libraries with MKL.\n+\n+To obtain this compiler, it is necessary to download for their **Intel Parallel Studio XE** product,\n+which can be trialed for 30 days, but it is currently unknown what will happen to the library and header\n+files on your hard drive after that period has expired. To download, visit this page `here <https://software.intel.com/en-us/fortran-compilers>`__\n+for more information. However, if you are a **student** or **educator**, this option is quite\n+viable because Intel's academic license will provide you everything that you need **free of charge**.\n+To register, visit this page `here <https://software.intel.com/en-us/qualify-for-free-software>`__, choose the\n+appropriate option corresponding to you. Afterwards, click the link corresponding to **Intel Parallel Studio XE**\n+and download. Note that this installation will require that you have the most up-to-date version of `Visual Studio`_.\n+\n+ATLAS and LAPACK\n+################\n+\n+ATLAS_ is an optimized version of BLAS that is considered to be \"portably efficient\" according to its website. If you\n+want to use this library, the easiest is to use this library in combination with Mingw-w64_. Precompiled libraries using\n+this toolchain can be found `here <https://github.com/matthew-brett/np-wheel-builder/tree/master/atlas-builds>`__ in the\n+folder corresponding to your architecture (32-bit or 64-bit). While this setup has been shown to build NumPy successfully,\n+it is not known yet whether it can build SciPy.\n+\n+If you are so inclined to build ATLAS_ by hand, you **must** use Cygwin to build it because the library was explicitly\n+designed for Unix environments. However, you can compile the library either the native **gcc** tools or with the **mingww-64**\n+tool package that you can download with Cygwin_. Installations scripts can be found in the same location `here <https://github.com/matthew-brett/np-wheel-builder/tree/master/atlas-builds>`__.\n+In the folder corresponding to your architecture, search for an **install_atlas** script, download the appropriate ZIP files\n+`here <http://nipy.bic.berkeley.edu/scipy_installers/atlas_builds/>`__, fill in some of the variables with appropriate\n+values corresponding to your directory structure (e.g. the **code_home** variable) and then run script. **Be forewarned\n+though that this will take a very long time (around eight hours) to install**.\n+\n+Finally, it should be noted that ATLAS_, although open source, is not well optimized for Windows given its intended\n+operating system environment and is therefore not very optimized for a Windows environment. Thus, if performance is of\n+the utmost importance, ATLAS_ may not be the best choice of libraries.\n+\n+OpenBLAS and LAPACK\n+###################\n+\n+OpenBLAS_ is an optimized version of BLAS that is currently used in languages like Julia_ by default. Besides being\n+actively worked upon, it performs about as well as the Intel libraries discussed previously. Furthermore, it is also\n+quite easy install using Cygwin_. Just search for **openblas** and **lapack** in the packages that you are downloading,\n+and they will be automatically installed into your **usr/lib** directory, which is where NumPy and SciPy will search\n+for libraries if no configuration file is provided. **Please note that if you choose this route, you must use Cygwin's\n+Python for this setup to work.** During installation, just search for **python** in the packages and download the\n+appropriate interpreter. However, if you are so inclined to build OpenBLAS_ by hand or want to build the library in your\n+native Windows environment, installation instructions can be found on the OpenBLAS_ wiki page `here <https://github.com/xianyi/OpenBLAS/wiki/Installation-Guide>`__.\n+\n+.. _Julia: https://github.com/JuliaLang/julia\n+\n+BLAS and LAPACK\n ###############\n \n-Once you've completed the steps above,\n-\n- 1. Download and extract the `LAPACK sources\n-    <http://www.netlib.org/lapack/lapack.tgz>`_. Then download the `latest\n-    development patch <http://www.netlib.org/lapack-dev/>`_ and overwrite the\n-    files from the standard distribution with the files in the patch.  \n- 2. Copy the file ``LAPACK\\INSTALL\\make.inc.LINUX`` to ``LAPACK\\make.inc``,\n-    where LAPACK stands for your LAPACK root directory.\n- 3. Append ``.PHONY: install testing timing`` as the last line to\n-    ``LAPACK\\Makefile``\n- 4. Execute ``make install lib`` and wait a few minutes for the compilation to\n-    finish (the timing error in the beginning is without meaning).\n-\n-Now copy the file ``lapack_LINUX.a`` from ``LAPACK`` to your equivalent of the\n-folder ``BLASLAPACKLIBS`` created above. \n-\n-Obtaining an ATLAS-optimized LAPACK\n-###################################\n-\n-In Cygwin, ``cd`` to your ``BLASLAPACKLIBS`` folder and execute the following::\n-\n-    ar x liblapack.a\n-    ar r lapack_LINUX.a *.o\n-    rm *.o\n-    mv lapack_LINUX.a liblapack.a\n-\n-You now have the files ``libcblas.a``, ``libf77blas.a``, ``liblapack.a`` and\n-``libatlas.a`` in your ``BLASLAPACKLIBS`` folder, holding optimized static\n-CBLAS, BLAS, (complete) LAPACK libraries and their low level ATLAS support\n-library. If you want to use MSVC to build NumPy/SciPy, you have to rename the\n-``lib*.a`` files to ``*.lib``, i.e. ``libcblas.a`` to ``cblas.lib``, for\n-instance.\n-\n-In case you want to create a DLL with the full BLAS, CBLAS and LAPACK interface\n-(currently not relevant for SciPy), this could be easily done as follows::\n-\n-   gcc -mno-cygwin -shared -o blaslapack.dll -Wl,--out-implib=blaslapack.lib \\\n-   -Wl,--export-all-symbols -Wl,--allow-multiple-definition \\\n-   -Wl,--enable-auto-import -Wl,--whole-archive liblapack.a libf77blas.a \\\n-   libcblas.a -Wl,--no-whole-archive libatlas.a -lg2c\n-\n-This generates a DLL linked to ``msvcrt.dll``. If you want to generate a DLL\n-(only) linked to ``msvcr71``, using the command line option ``-lmsvcr71`` is\n-not enough (due to a bug in MinGW?). Instead, you need to replace ``-lmsvcrt``\n-in your gcc spec file (in ``Cygwin\\lib\\gcc\\i686-pc-cygwin\\3.4.X`` or\n-``MinGW\\lib\\gcc\\mingw32\\3.4.X``) with ``-lmsvcr71`` before executing the above\n-command. If you want to check the DLL dependencies, you can use ``depends``. \n-\n-The generated ``blaslapack.lib`` is the import library for linking the DLL.\n-\n-Building NumPy with ATLAS/LAPACK\n-################################\n-\n-In order to configure NumPy to use your optimized BLAS/LAPACK libraries you\n-need to copy the ``site.cfg.example`` file in the root directory of NumPy to\n-``site.cfg``. If ``site.cfg.example`` does not exist, then just create a new\n-``site.cfg``.  Change its contents as follows:\n-\n-If you've built ATLAS and LAPACK as described above::\n-\n-    [atlas]\n-    library_dirs = c:\\path\\to\\BLASLAPACKLIBS\n-    atlas_libs = lapack, f77blas, cblas, atlas\n-\n-If you want to use some other static BLAS and LAPACK libraries instead, use::\n-\n-    [blas]\n-    library_dirs = c:\\path\\to\\CBLAS\n-    blas_libs = cblas\n-    \n-    [lapack]\n-    library_dirs = c:\\path\\to\\BLASLibs\n-    lapack_libs = lapack\n-\n-where ``cblas`` and ``lapack`` should be replaced with the names of your\n-libraries (without ``lib*.a`` or ``.lib`` extensions).\n-\n-Now change to the NumPy root directory in a Windows command prompt window (or\n-the Cygwin bash shell). If you want to compile with MinGW or Cygwin-MinGW,\n-execute\n-\n-::\n-\n-    c:\\path\\to\\python.exe setup.py config --compiler=mingw32 build\n-    --compiler=mingw32 bdist_wininst\n-\n-and if you want to compile with Visual Studio 2003, execute\n-\n-::\n-\n-    c:\\path\\to\\python.exe setup.py config --compiler=msvc build --compiler=msvc\n-    bdist_wininst\n-\n-This leaves you with a nice binary installer in the dist subfolder, which you\n-can use to install NumPy and later uninstall through \"Add and Remove Programs\"\n-in the Windows Control Panel. \n-\n-If you'd rather just go ahead and actually install it somewhere, use::\n-\n-    c:\\path\\to\\python.exe setup.py config --compiler=[compiler] build\n-    --compiler=[compiler] install --prefix=c:\\where\\to\\install\n-\n-\n-If you want to compile and install NumPy for use with the Python from Cygwin\n-(usually you don't), execute\n-\n-::\n-\n-    python setup.py config --compiler=mingw32 build --compiler=mingw32 install\n-\n-If you later wish to rebuild NumPy, say after updating the code from SVN, \n-it may be necessary to delete the ``build`` directory first before \n-re-running the above commands. \n-\n-Miscellaneous Notes\n--------------------\n-\n-Miscellaneous Notes:\n-\n-If you're getting a ``gcc.lib not found`` error, it is probably because you're\n-building with ``--compiler=msvc``, but you also have MinGW installed. In that\n-case NumPy may compile some Fortran files using MinGW, and then at link time\n-try to link with ``gcc.lib`` which doesn't exist in the MinGW distribution. You\n-can fix this by copying some MinGW ``.a`` file to ``.lib`` files::\n-\n-    cd c:\\MinGW\\lib\\gcc\\mingw32\\{compiler.version}\\\n-    copy libgcc.a   gcc.lib\n-    copy c:\\MinGW\\lib\\libg2c.a   .\\g2c.lib\n-\n-If you get errors like this::\n-\n-    lapack.lib(zunmbr.o) : error LNK2001: unresolved external symbol _s_cat\n-    lapack.lib(zunmqr.o) : error LNK2001: unresolved external symbol _s_cat\n-    lapack.lib(dormql.o) : error LNK2001: unresolved external symbol _s_cat\n-    lapack.lib(zunmql.o) : error LNK2001: unresolved external symbol _s_cat\n-    lapack.lib(dormbr.o) : error LNK2001: unresolved external symbol _s_cat\n-    lapack.lib(dormqr.o) : error LNK2001: unresolved external symbol _s_cat\n-    lapack.lib(zhseqr.o) : error LNK2019: unresolved external symbol _s_cat referenced in function _zhseqr_\n-    lapack.lib(zunmlq.o) : error LNK2001: unresolved external symbol _s_cat\n-    lapack.lib(dhseqr.o) : error LNK2019: unresolved external symbol _s_cat referenced in function _dhseqr_\n-    lapack.lib(dormtr.o) : error LNK2001: unresolved external symbol _s_cat\n-    lapack.lib(zunmtr.o) : error LNK2001: unresolved external symbol _s_cat\n-    lapack.lib(dormlq.o) : error LNK2001: unresolved external symbol _s_cat\n-    lapack.lib(dlamch.o) : error LNK2019: unresolved external symbol _e_wsfe referenced in function _dlamc2_\n-    lapack.lib(xerbla.o) : error LNK2001: unresolved external symbol _e_wsfe\n-    lapack.lib(dlamch.o) : error LNK2019: unresolved external symbol _do_fio referenced in function _dlamc2_\n-    lapack.lib(xerbla.o) : error LNK2001: unresolved external symbol _do_fio\n-    lapack.lib(dlamch.o) : error LNK2019: unresolved external symbol _s_wsfe referenced in function _dlamc2_\n-    lapack.lib(xerbla.o) : error LNK2001: unresolved external symbol _s_wsfe\n-    lapack.lib(xerbla.o) : error LNK2019: unresolved external symbol _s_stop referenced in function _xerbla_\n-    lapack.lib(ilaenv.o) : error LNK2019: unresolved external symbol _s_cmp referenced in function _ilaenv_\n-    lapack.lib(ilaenv.o) : error LNK2019: unresolved external symbol _s_copy referenced in function _ilaenv_\n-    lapack.lib(zlahqr.o) : error LNK2019: unresolved external symbol _z_abs referenced in function _zlahqr_\n-    lapack.lib(zlanhe.o) : error LNK2019: unresolved external symbol _z_abs referenced in function _zlanhe_\n-    lapack.lib(zgebal.o) : error LNK2019: unresolved external symbol _z_abs referenced in function _zgebal_\n-    lapack.lib(zlange.o) : error LNK2019: unresolved external symbol _z_abs referenced in function _zlange_\n-    lapack.lib(zlanhs.o) : error LNK2019: unresolved external symbol _z_abs referenced in function _zlanhs_\n-    lapack.lib(zhseqr.o) : error LNK2019: unresolved external symbol __alloca referenced in function _zhseqr_\n-    lapack.lib(zlarfx.o) : error LNK2019: unresolved external symbol __alloca referenced in function _zlarfx_\n-    lapack.lib(zlahqr.o) : error LNK2019: unresolved external symbol _z_sqrt referenced in function _zlahqr_\n-    build\\lib.win32-2.4\\numpy\\linalg\\lapack_lite.pyd : fatal error LNK1120: 10 unresolved externals\n-\n-you need to add the g2c and gcc libraries to the ATLAS and LAPACK\n-libraries you have already. With Cygwin, you can find these in\n-``/lib/gcc/i686-pc-mingw32/3.4.4``. Copy them to ``g2c.lib`` and ``gcc.lib``,\n-respectively, and modify ``site.cfg`` accordingly. \n-\n-\n-Building SciPy\n---------------\n-\n-.. _ATLAS: http://math-atlas.sourceforge.net/\n-.. _SSE3 problems: http://math-atlas.sourceforge.net/errata.html#sse3kill\n-.. _CPU-Z: http://www.cpuid.com/cpuz.php\n-\n+Up to this point, we have been discussing optimized versions of BLAS_ coupled with LAPACK_. It goes without saying then\n+that it must be possible then to build NumPy and SciPy with an unoptimized BLAS_ library. Pre-built libraries are readily\n+available here, though **be sure to check the environment in which the libraries** were built in. Otherwise, NumPy and\n+SciPy will not build. However, if none of the environments match your own environment, the libraries themselves can be\n+downloaded as ZIP files by searching for a \"download\" section on the BLAS_ and LAPACK_ webpages. Rough installation\n+instructions can be found `here <http://ab-initio.mit.edu/wiki/index.php/Template:Installing_BLAS_and_LAPACK>`__ for\n+BLAS_ and on the LAPACK_ homepage for LAPACK_. While these instructions are for Linux, you should be able to follow these\n+instructions fairly well if you have either Cygwin_ or Mingw-w64_ installed on your computer.\n+\n+Finally, it goes without saying that because this is an unoptimized BLAS_ library, do not expect very good performance\n+with either NumPy or SciPy. Thus, if performance is of the utmost importance, do read the previous sections in order to","path":"www/scipylib/building/windows.rst","position":null,"original_position":544,"commit_id":"1b8673052222b8c1869e1c5ac4df722715b7baa9","original_commit_id":"d5ae0c128aa20f334781cdbba3ed302de0a4605d","user":{"login":"gfyoung","id":9273653,"avatar_url":"https://avatars.githubusercontent.com/u/9273653?v=3","gravatar_id":"","url":"https://api.github.com/users/gfyoung","html_url":"https://github.com/gfyoung","followers_url":"https://api.github.com/users/gfyoung/followers","following_url":"https://api.github.com/users/gfyoung/following{/other_user}","gists_url":"https://api.github.com/users/gfyoung/gists{/gist_id}","starred_url":"https://api.github.com/users/gfyoung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gfyoung/subscriptions","organizations_url":"https://api.github.com/users/gfyoung/orgs","repos_url":"https://api.github.com/users/gfyoung/repos","events_url":"https://api.github.com/users/gfyoung/events{/privacy}","received_events_url":"https://api.github.com/users/gfyoung/received_events","type":"User","site_admin":false},"body":"A fresh look suggests that that whole last section is not necessary.  I mean I even started it by saying \"it goes without saying...\" before proceeding to say it :smile: ","created_at":"2016-03-08T07:52:28Z","updated_at":"2016-03-08T07:52:28Z","html_url":"https://github.com/scipy/scipy.org/pull/146#discussion_r55326104","pull_request_url":"https://api.github.com/repos/scipy/scipy.org/pulls/146","_links":{"self":{"href":"https://api.github.com/repos/scipy/scipy.org/pulls/comments/55326104"},"html":{"href":"https://github.com/scipy/scipy.org/pull/146#discussion_r55326104"},"pull_request":{"href":"https://api.github.com/repos/scipy/scipy.org/pulls/146"}}},"pull_request":{"url":"https://api.github.com/repos/scipy/scipy.org/pulls/146","id":59434425,"html_url":"https://github.com/scipy/scipy.org/pull/146","diff_url":"https://github.com/scipy/scipy.org/pull/146.diff","patch_url":"https://github.com/scipy/scipy.org/pull/146.patch","issue_url":"https://api.github.com/repos/scipy/scipy.org/issues/146","number":146,"state":"open","locked":false,"title":"DOC: Revamp Building from Source on Windows","user":{"login":"gfyoung","id":9273653,"avatar_url":"https://avatars.githubusercontent.com/u/9273653?v=3","gravatar_id":"","url":"https://api.github.com/users/gfyoung","html_url":"https://github.com/gfyoung","followers_url":"https://api.github.com/users/gfyoung/followers","following_url":"https://api.github.com/users/gfyoung/following{/other_user}","gists_url":"https://api.github.com/users/gfyoung/gists{/gist_id}","starred_url":"https://api.github.com/users/gfyoung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gfyoung/subscriptions","organizations_url":"https://api.github.com/users/gfyoung/orgs","repos_url":"https://api.github.com/users/gfyoung/repos","events_url":"https://api.github.com/users/gfyoung/events{/privacy}","received_events_url":"https://api.github.com/users/gfyoung/received_events","type":"User","site_admin":false},"body":"Addresses issue #145 by revamping / updating the documentation on building source from Windows to provide a more organized format as well as to reflect ongoing projects like <a href=\"http://mingwpy.github.io/\">Mingwpy</a> that users should be aware of.  Related to `numpy` issue <a href=\"https://github.com/numpy/numpy/issues/5479\">#5479</a>\r\n\r\n@matthew-brett, @carlkl, @njsmith, @rgommers, @juliantaylor, @tkelman ","created_at":"2016-02-16T02:06:02Z","updated_at":"2016-03-08T07:52:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d7d544a399859244d22a9426ead7982fcbb725e2","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/scipy/scipy.org/pulls/146/commits","review_comments_url":"https://api.github.com/repos/scipy/scipy.org/pulls/146/comments","review_comment_url":"https://api.github.com/repos/scipy/scipy.org/pulls/comments{/number}","comments_url":"https://api.github.com/repos/scipy/scipy.org/issues/146/comments","statuses_url":"https://api.github.com/repos/scipy/scipy.org/statuses/1b8673052222b8c1869e1c5ac4df722715b7baa9","head":{"label":"gfyoung:win_source_build","ref":"win_source_build","sha":"1b8673052222b8c1869e1c5ac4df722715b7baa9","user":{"login":"gfyoung","id":9273653,"avatar_url":"https://avatars.githubusercontent.com/u/9273653?v=3","gravatar_id":"","url":"https://api.github.com/users/gfyoung","html_url":"https://github.com/gfyoung","followers_url":"https://api.github.com/users/gfyoung/followers","following_url":"https://api.github.com/users/gfyoung/following{/other_user}","gists_url":"https://api.github.com/users/gfyoung/gists{/gist_id}","starred_url":"https://api.github.com/users/gfyoung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gfyoung/subscriptions","organizations_url":"https://api.github.com/users/gfyoung/orgs","repos_url":"https://api.github.com/users/gfyoung/repos","events_url":"https://api.github.com/users/gfyoung/events{/privacy}","received_events_url":"https://api.github.com/users/gfyoung/received_events","type":"User","site_admin":false},"repo":{"id":50328244,"name":"scipy.org","full_name":"gfyoung/scipy.org","owner":{"login":"gfyoung","id":9273653,"avatar_url":"https://avatars.githubusercontent.com/u/9273653?v=3","gravatar_id":"","url":"https://api.github.com/users/gfyoung","html_url":"https://github.com/gfyoung","followers_url":"https://api.github.com/users/gfyoung/followers","following_url":"https://api.github.com/users/gfyoung/following{/other_user}","gists_url":"https://api.github.com/users/gfyoung/gists{/gist_id}","starred_url":"https://api.github.com/users/gfyoung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gfyoung/subscriptions","organizations_url":"https://api.github.com/users/gfyoung/orgs","repos_url":"https://api.github.com/users/gfyoung/repos","events_url":"https://api.github.com/users/gfyoung/events{/privacy}","received_events_url":"https://api.github.com/users/gfyoung/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gfyoung/scipy.org","description":"Scipy.org web site source code","fork":true,"url":"https://api.github.com/repos/gfyoung/scipy.org","forks_url":"https://api.github.com/repos/gfyoung/scipy.org/forks","keys_url":"https://api.github.com/repos/gfyoung/scipy.org/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gfyoung/scipy.org/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gfyoung/scipy.org/teams","hooks_url":"https://api.github.com/repos/gfyoung/scipy.org/hooks","issue_events_url":"https://api.github.com/repos/gfyoung/scipy.org/issues/events{/number}","events_url":"https://api.github.com/repos/gfyoung/scipy.org/events","assignees_url":"https://api.github.com/repos/gfyoung/scipy.org/assignees{/user}","branches_url":"https://api.github.com/repos/gfyoung/scipy.org/branches{/branch}","tags_url":"https://api.github.com/repos/gfyoung/scipy.org/tags","blobs_url":"https://api.github.com/repos/gfyoung/scipy.org/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gfyoung/scipy.org/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gfyoung/scipy.org/git/refs{/sha}","trees_url":"https://api.github.com/repos/gfyoung/scipy.org/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gfyoung/scipy.org/statuses/{sha}","languages_url":"https://api.github.com/repos/gfyoung/scipy.org/languages","stargazers_url":"https://api.github.com/repos/gfyoung/scipy.org/stargazers","contributors_url":"https://api.github.com/repos/gfyoung/scipy.org/contributors","subscribers_url":"https://api.github.com/repos/gfyoung/scipy.org/subscribers","subscription_url":"https://api.github.com/repos/gfyoung/scipy.org/subscription","commits_url":"https://api.github.com/repos/gfyoung/scipy.org/commits{/sha}","git_commits_url":"https://api.github.com/repos/gfyoung/scipy.org/git/commits{/sha}","comments_url":"https://api.github.com/repos/gfyoung/scipy.org/comments{/number}","issue_comment_url":"https://api.github.com/repos/gfyoung/scipy.org/issues/comments{/number}","contents_url":"https://api.github.com/repos/gfyoung/scipy.org/contents/{+path}","compare_url":"https://api.github.com/repos/gfyoung/scipy.org/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gfyoung/scipy.org/merges","archive_url":"https://api.github.com/repos/gfyoung/scipy.org/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gfyoung/scipy.org/downloads","issues_url":"https://api.github.com/repos/gfyoung/scipy.org/issues{/number}","pulls_url":"https://api.github.com/repos/gfyoung/scipy.org/pulls{/number}","milestones_url":"https://api.github.com/repos/gfyoung/scipy.org/milestones{/number}","notifications_url":"https://api.github.com/repos/gfyoung/scipy.org/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gfyoung/scipy.org/labels{/name}","releases_url":"https://api.github.com/repos/gfyoung/scipy.org/releases{/id}","deployments_url":"https://api.github.com/repos/gfyoung/scipy.org/deployments","created_at":"2016-01-25T05:26:35Z","updated_at":"2016-01-25T05:26:36Z","pushed_at":"2016-03-08T07:51:14Z","git_url":"git://github.com/gfyoung/scipy.org.git","ssh_url":"git@github.com:gfyoung/scipy.org.git","clone_url":"https://github.com/gfyoung/scipy.org.git","svn_url":"https://github.com/gfyoung/scipy.org","homepage":"http://scipy.org","size":854,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"scipy:master","ref":"master","sha":"53d47be7d797832f4b287ecd4658ba0d01242fe1","user":{"login":"scipy","id":288277,"avatar_url":"https://avatars.githubusercontent.com/u/288277?v=3","gravatar_id":"","url":"https://api.github.com/users/scipy","html_url":"https://github.com/scipy","followers_url":"https://api.github.com/users/scipy/followers","following_url":"https://api.github.com/users/scipy/following{/other_user}","gists_url":"https://api.github.com/users/scipy/gists{/gist_id}","starred_url":"https://api.github.com/users/scipy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scipy/subscriptions","organizations_url":"https://api.github.com/users/scipy/orgs","repos_url":"https://api.github.com/users/scipy/repos","events_url":"https://api.github.com/users/scipy/events{/privacy}","received_events_url":"https://api.github.com/users/scipy/received_events","type":"Organization","site_admin":false},"repo":{"id":1460395,"name":"scipy.org","full_name":"scipy/scipy.org","owner":{"login":"scipy","id":288277,"avatar_url":"https://avatars.githubusercontent.com/u/288277?v=3","gravatar_id":"","url":"https://api.github.com/users/scipy","html_url":"https://github.com/scipy","followers_url":"https://api.github.com/users/scipy/followers","following_url":"https://api.github.com/users/scipy/following{/other_user}","gists_url":"https://api.github.com/users/scipy/gists{/gist_id}","starred_url":"https://api.github.com/users/scipy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scipy/subscriptions","organizations_url":"https://api.github.com/users/scipy/orgs","repos_url":"https://api.github.com/users/scipy/repos","events_url":"https://api.github.com/users/scipy/events{/privacy}","received_events_url":"https://api.github.com/users/scipy/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/scipy/scipy.org","description":"Scipy.org web site source code","fork":false,"url":"https://api.github.com/repos/scipy/scipy.org","forks_url":"https://api.github.com/repos/scipy/scipy.org/forks","keys_url":"https://api.github.com/repos/scipy/scipy.org/keys{/key_id}","collaborators_url":"https://api.github.com/repos/scipy/scipy.org/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/scipy/scipy.org/teams","hooks_url":"https://api.github.com/repos/scipy/scipy.org/hooks","issue_events_url":"https://api.github.com/repos/scipy/scipy.org/issues/events{/number}","events_url":"https://api.github.com/repos/scipy/scipy.org/events","assignees_url":"https://api.github.com/repos/scipy/scipy.org/assignees{/user}","branches_url":"https://api.github.com/repos/scipy/scipy.org/branches{/branch}","tags_url":"https://api.github.com/repos/scipy/scipy.org/tags","blobs_url":"https://api.github.com/repos/scipy/scipy.org/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/scipy/scipy.org/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/scipy/scipy.org/git/refs{/sha}","trees_url":"https://api.github.com/repos/scipy/scipy.org/git/trees{/sha}","statuses_url":"https://api.github.com/repos/scipy/scipy.org/statuses/{sha}","languages_url":"https://api.github.com/repos/scipy/scipy.org/languages","stargazers_url":"https://api.github.com/repos/scipy/scipy.org/stargazers","contributors_url":"https://api.github.com/repos/scipy/scipy.org/contributors","subscribers_url":"https://api.github.com/repos/scipy/scipy.org/subscribers","subscription_url":"https://api.github.com/repos/scipy/scipy.org/subscription","commits_url":"https://api.github.com/repos/scipy/scipy.org/commits{/sha}","git_commits_url":"https://api.github.com/repos/scipy/scipy.org/git/commits{/sha}","comments_url":"https://api.github.com/repos/scipy/scipy.org/comments{/number}","issue_comment_url":"https://api.github.com/repos/scipy/scipy.org/issues/comments{/number}","contents_url":"https://api.github.com/repos/scipy/scipy.org/contents/{+path}","compare_url":"https://api.github.com/repos/scipy/scipy.org/compare/{base}...{head}","merges_url":"https://api.github.com/repos/scipy/scipy.org/merges","archive_url":"https://api.github.com/repos/scipy/scipy.org/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/scipy/scipy.org/downloads","issues_url":"https://api.github.com/repos/scipy/scipy.org/issues{/number}","pulls_url":"https://api.github.com/repos/scipy/scipy.org/pulls{/number}","milestones_url":"https://api.github.com/repos/scipy/scipy.org/milestones{/number}","notifications_url":"https://api.github.com/repos/scipy/scipy.org/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/scipy/scipy.org/labels{/name}","releases_url":"https://api.github.com/repos/scipy/scipy.org/releases{/id}","deployments_url":"https://api.github.com/repos/scipy/scipy.org/deployments","created_at":"2011-03-09T18:55:58Z","updated_at":"2016-01-29T19:32:27Z","pushed_at":"2016-03-08T07:51:15Z","git_url":"git://github.com/scipy/scipy.org.git","ssh_url":"git@github.com:scipy/scipy.org.git","clone_url":"https://github.com/scipy/scipy.org.git","svn_url":"https://github.com/scipy/scipy.org","homepage":"http://scipy.org","size":876,"stargazers_count":14,"watchers_count":14,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":52,"mirror_url":null,"open_issues_count":8,"forks":52,"open_issues":8,"watchers":14,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/scipy/scipy.org/pulls/146"},"html":{"href":"https://github.com/scipy/scipy.org/pull/146"},"issue":{"href":"https://api.github.com/repos/scipy/scipy.org/issues/146"},"comments":{"href":"https://api.github.com/repos/scipy/scipy.org/issues/146/comments"},"review_comments":{"href":"https://api.github.com/repos/scipy/scipy.org/pulls/146/comments"},"review_comment":{"href":"https://api.github.com/repos/scipy/scipy.org/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/scipy/scipy.org/pulls/146/commits"},"statuses":{"href":"https://api.github.com/repos/scipy/scipy.org/statuses/1b8673052222b8c1869e1c5ac4df722715b7baa9"}}}}