There are three options related to threads and users had to set all three of them separately to get the correct compilation results. This makes sure the relationship between the options makes sense and sets necessary options for users if only part of the necessary options are specified. This does:
- `-matomics` means `-mthread-model posix`
- `-mthread-model posix` means `-matomics`
- `-pthread` means both `-matomics` and `-mthread-model posix`
Also errors out when explicitly given options don't match, such as `-no-pthread` is explicitly given with `-matomics`.