# soniclib internal README

## Building

Run `make.ps1` to build all supported variants of soniclib. This builds all
relevant permutations of the various soniclib defines by default.

This build requires the GNU Arm Embedded Toolchain binaries to be on your path.
Additionally, by default, the build uses MinGW Makefiles, so `mingw32-make` or
`make` is required. You can switch generators by specifying the
`-Generator` option, e.g., `-Generator Ninja`.

For details on additional options availble with the `make.ps1` script, run
`Get-Help make.ps1 -Detailed`.

## Releasing soniclib

### Released files

Only files listed in publiclist.txt will be added to the release package. You
need to update this list if you have added files that should be public and are
not already covered.

### Flow

To create a soniclib release:

1. Create a tag. For full releases (not pre-releases), tag must match version in
   main header.
2. Push the tag.
3. Navigate to the Jenkins package job page.
4. Click "build with parameters".
5. Fill out the fields. Be sure to check the box if you want the release
   published to the public github.

### Pre-releases

You can create pre-releases from either the master branch or alternate branches.
Pre-releases should use one of the following suffixes: `-alpha.X`, `-beta.X`, or
`-rc.X`. Generally, a pre-release tag should increment the main component of the
version to the next logical version.

That is, if the current release is 3.1.2, then your pre-release tag could be
3.1.3-rc.1 or 3.2.0-rc.1, depending if the to-be-released changes are patch or
minor version changes. The main header does not track pre-release info, so you
can choose to leave this alone until the main release, or you can go ahead and
update it.

Generally, pre-releases should not be released publicly, so leave the public
release box unchecked. In this case, you will still get a package on
swdpackages, and the internal version of gh-pages doc will get updated. Neither
the public repo or public gh-pages will be touched.

## Merging external contributions

See CONTRIBUTING.PRIVATE.md.
