Update building for Windows instructions
Explain how to build for Windows in INSTALL.md and remove another readme.txt in an obscure location.
This commit is contained in:
parent
4fc5c4fbac
commit
3713932836
79
INSTALL.md
79
INSTALL.md
@ -396,6 +396,85 @@ exclusively):
|
|||||||
|
|
||||||
Use this to search for programs used during configuration and building.
|
Use this to search for programs used during configuration and building.
|
||||||
|
|
||||||
|
## Building for Windows
|
||||||
|
|
||||||
|
There are at least two ways to build jemalloc's libraries for Windows. They
|
||||||
|
differ in their ease of use and flexibility.
|
||||||
|
|
||||||
|
### With MSVC solutions
|
||||||
|
This is the easy, but less flexible approach. It doesn't let you specify
|
||||||
|
arguments to the `configure` script.
|
||||||
|
|
||||||
|
1. Install Cygwin with at least the following packages:
|
||||||
|
* autoconf
|
||||||
|
* autogen
|
||||||
|
* gawk
|
||||||
|
* grep
|
||||||
|
* sed
|
||||||
|
|
||||||
|
2. Install Visual Studio 2015 or 2017 with Visual C++
|
||||||
|
|
||||||
|
3. Add Cygwin\bin to the PATH environment variable
|
||||||
|
|
||||||
|
4. Open "x64 Native Tools Command Prompt for VS 2017"
|
||||||
|
(note: x86/x64 doesn't matter at this point)
|
||||||
|
|
||||||
|
5. Generate header files:
|
||||||
|
sh -c "CC=cl ./autogen.sh"
|
||||||
|
|
||||||
|
6. Now the project can be opened and built in Visual Studio:
|
||||||
|
msvc\jemalloc_vc2017.sln
|
||||||
|
|
||||||
|
### With MSYS
|
||||||
|
This is a more involved approach that offers the same configuration flexibility
|
||||||
|
as Linux builds. We use it for our CI workflow to test different jemalloc
|
||||||
|
configurations on Windows.
|
||||||
|
|
||||||
|
1. Install the prerequisites
|
||||||
|
1. MSYS2
|
||||||
|
2. Chocolatey
|
||||||
|
3. Visual Studio if you want to compile with MSVC compiler
|
||||||
|
|
||||||
|
2. Run your bash emulation. It could be MSYS2 or Git Bash (this manual was
|
||||||
|
tested on both)
|
||||||
|
3. Manually and selectively follow
|
||||||
|
[before_install.sh](https://github.com/jemalloc/jemalloc/blob/dev/scripts/windows/before_install.sh)
|
||||||
|
script.
|
||||||
|
1. Skip the `TRAVIS_OS_NAME` check, `rm -rf C:/tools/msys64` and `choco
|
||||||
|
uninstall/upgrade` part.
|
||||||
|
2. If using `msys2` shell, add path to `RefreshEnv.cmd` to `PATH`:
|
||||||
|
`PATH="$PATH:/c/ProgramData/chocolatey/bin"`
|
||||||
|
3. Assign `msys_shell_cmd`, `msys2`, `mingw32` and `mingw64` as in the
|
||||||
|
script.
|
||||||
|
4. Pick `CROSS_COMPILE_32BIT` , `CC` and `USE_MSVC` values depending on
|
||||||
|
your needs. For instance, if you'd like to build for x86_64 Windows
|
||||||
|
with `gcc`, then `CROSS_COMPILE_32BIT="no"`, `CC="gcc"` and
|
||||||
|
`USE_MSVC=""`. If you'd like to build for x86 Windows with `cl.exe`,
|
||||||
|
then `CROSS_COMPILE_32BIT="yes"`, `CC="cl.exe"`, `USE_MSVC="x86"`.
|
||||||
|
For x86_64 builds with `cl.exe`, assign `USE_MSVC="amd64"` and
|
||||||
|
`CROSS_COMPILE_32BIT="no"`.
|
||||||
|
5. Replace the path to `vcvarsall.bat` with the path on your system. For
|
||||||
|
instance, on my Windows PC with Visual Studio 17, the path is
|
||||||
|
`C:\Program Files (x86)\Microsoft Visual
|
||||||
|
Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat`.
|
||||||
|
6. Execute the rest of the script. It will install the required
|
||||||
|
dependencies and assign the variable `build_env`, which is a function
|
||||||
|
that executes following commands with the correct environment
|
||||||
|
variables set.
|
||||||
|
4. Use `$build_env <command>` as you would in a Linux shell:
|
||||||
|
1. `$build_env autoconf`
|
||||||
|
2. `$build_env ./configure CC="<desired compiler>" <configuration flags>`
|
||||||
|
3. `$build_env mingw32-make`
|
||||||
|
|
||||||
|
If you're having any issues with the above, ensure the following:
|
||||||
|
|
||||||
|
5. When you run `cmd //C RefreshEnv.cmd`, you get an output line starting with
|
||||||
|
`Refreshing` . If it errors saying `RefreshEnv.cmd` is not found, then you
|
||||||
|
need to add it to your `PATH` as described above in item 3.2
|
||||||
|
|
||||||
|
6. When you run `cmd //C $vcvarsall`, it prints a bunch of environment
|
||||||
|
variables. Otherwise, check the path to the `vcvarsall.bat` in `$vcvarsall`
|
||||||
|
script and fix it.
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
|
|
||||||
How to build jemalloc for Windows
|
|
||||||
=================================
|
|
||||||
|
|
||||||
1. Install Cygwin with at least the following packages:
|
|
||||||
* autoconf
|
|
||||||
* autogen
|
|
||||||
* gawk
|
|
||||||
* grep
|
|
||||||
* sed
|
|
||||||
|
|
||||||
2. Install Visual Studio 2015 or 2017 with Visual C++
|
|
||||||
|
|
||||||
3. Add Cygwin\bin to the PATH environment variable
|
|
||||||
|
|
||||||
4. Open "x64 Native Tools Command Prompt for VS 2017"
|
|
||||||
(note: x86/x64 doesn't matter at this point)
|
|
||||||
|
|
||||||
5. Generate header files:
|
|
||||||
sh -c "CC=cl ./autogen.sh"
|
|
||||||
|
|
||||||
6. Now the project can be opened and built in Visual Studio:
|
|
||||||
msvc\jemalloc_vc2017.sln
|
|
Loading…
Reference in New Issue
Block a user