Merge pull request #27 from prichmp/master

Build instructions for Windows
This commit is contained in:
0/0 2023-04-10 21:24:11 +00:00 committed by GitHub
commit dfe74508dc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 4 deletions

40
BUILDING.md Normal file
View file

@ -0,0 +1,40 @@
# Running on Windows using MSYS2
The following are instructions for building whisper-rs on Windows using the msys2 set of compilers.
1. install msys2/mingw by following [https://code.visualstudio.com/docs/cpp/config-mingw](`https://code.visualstudio.com/docs/cpp/config-mingw`)
1. Install g++ and make within msys2 ucrt64
- `pacman -S --needed base-devel mingw-w64-x86_64-toolchain`
2. Add the msys2 ucrt64 bin folder to path `C:\msys64\ucrt64\bin`
2. Install make by running `pacman -S make` in msys2 ucrt66
3. Set rust to use msys2: by running `rustup toolchain install stable-x86_64-pc-windows-gnu` in Windows Powershell/Cmd
4. Add `.cargo/config.toml` file in the project with the following contents:
```
[target.x86_64-pc-windows-gnu]
linker = "C:\\msys64\\ucrt64\\bin\\gcc.exe"
ar = "C:\\msys64\\ucrt64\\bin\\ar.exe"
```
5. Run `cargo run` in Windows Powershell/Cmd
# Running on Windows using Microsoft Visual Studio C++
It has been reported that it is also possible to build whisper-rs using Visual Studio C++.
Make sure you have installed and in the path:
- Visual Studio C++
- cmake
You may need to clone the git repository instead of using the Cargo package.
# Running on M1 OSX
To build on a M1 Mac, make sure to add the following to your project's `.cargo/config.toml`:
```
[target.aarch64-apple-darwin]
rustflags = "-lc++ -l framework=Accelerate"
```
See https://github.com/tazz4843/whisper-rs/pull/2 for more information.

View file

@ -37,23 +37,25 @@ See [examples/basic_use.rs](examples/basic_use.rs) for more details.
Lower level bindings are exposed if needed, but the above should be enough for most use cases. Lower level bindings are exposed if needed, but the above should be enough for most use cases.
See the docs: https://docs.rs/whisper-rs/ for more details. See the docs: https://docs.rs/whisper-rs/ for more details.
## Building
See [BUILDING.md](BUILDING.md) for instructions for building whisper-rs on Windows and OSX M1.
## Troubleshooting ## Troubleshooting
* I get an error about a lot of undefined symbols at compile time! * I get an error about a lot of undefined symbols at compile time!
* These symbols might be part of the C++ standard library. * These symbols might be part of the C++ standard library.
* Try linking against it with the `-Clink-args=-lstdc++` compiler flag: * Try linking against it with the `-Clink-args=-lstdc++` compiler flag:
* `RUSTFLAGS="-Clink-args=-lstdc++" cargo build` * `RUSTFLAGS="-Clink-args=-lstdc++" cargo build`
* Windows/macOS/Android aren't working! * macOS/Android aren't working!
* I don't have a way to test these platforms, so I can't really help you. * I don't have a way to test these platforms, so I can't really help you.
* If you can get it working, please open a PR! * If you can get it working, please open a PR with any changes to make it work and build instructions in BUILDING.md!
* I get a panic during binding generation build! * I get a panic during binding generation build!
* You can attempt to fix it yourself, or you can set the `WHISPER_DONT_GENERATE_BINDINGS` environment variable. * You can attempt to fix it yourself, or you can set the `WHISPER_DONT_GENERATE_BINDINGS` environment variable.
This skips attempting to build the bindings whatsoever and copies the existing ones. They may be out of date, This skips attempting to build the bindings whatsoever and copies the existing ones. They may be out of date,
but it's better than nothing. but it's better than nothing.
* `WHISPER_DONT_GENERATE_BINDINGS=1 cargo build` * `WHISPER_DONT_GENERATE_BINDINGS=1 cargo build`
* If you can fix the issue, please open a PR! * If you can fix the issue, please open a PR!
* M1 build info:
* See [this issue](https://github.com/tazz4843/whisper-rs/pull/2) for more info.
## License ## License
[Unlicense](LICENSE) [Unlicense](LICENSE)