This directory contains scripts and files to package libsodium for .NET Core.

In .NET Core, it is customary to provide pre-compiled binaries for all platforms
as NuGet packages. The purpose of the `prepare.py` script in this directory is
to generate a `Makefile` that downloads and builds libsodium binaries for a
number of platforms and assembles them in a NuGet package that can be uploaded
to [nuget.org](https://nuget.org/).

* For Windows, binaries are obtained from
  [download.libsodium.org](https://download.libsodium.org/libsodium/releases/).
* For macOS, binaries are extracted from the
  [Homebrew libsodium bottle](https://bintray.com/homebrew/bottles/libsodium).
* For Linux, libsodium is compiled in Docker containers.

See `prepare.py` for the complete list of supported platforms.

The metadata for the NuGet package is located in `libsodium.props`.


**Making a pre-release**

1. Run `python3 prepare.py 1.0.13-preview-01` to generate the `Makefile`.
   `1.0.13` is the libsodium version number; `01` is the pre-release
   number and needs to be incremented for each pre-release.
2. Take a look at the generated `Makefile`. It uses `sudo` a few times.
3. Run `make` to download and build the binaries and create the NuGet
   package. You may need to install `docker`, `make`, `curl`, `tar` and
   `unzip` first. The NuGet package is output as a `.nupkg` file in the
   `build` directory.
4. Grab a cup of coffee. Downloading the Docker images and compiling the
   Linux binaries takes a while.
5. Verify that everything in the `.nupkg` file is in place.
6. Publish the release by uploading the `.nupkg` file to 
   [nuget.org](https://nuget.org/).


**Making a release**

1. Run `python3 prepare.py 1.0.13` to generate the `Makefile`.

The remaining steps are the same.
