O Cygwin é uma coleção de ferramentas recompiladas normalmente encontradas em um sistema Linux mais uma DLL (cygwin1.dll) que fornece uma camada de compatibilidade entre essas ferramentas e o sistema operacional Windows subjacente.
O Cygwin não pode simplesmente rodar qualquer programa POSIX que você queira. Você tem que recompilar esse software a partir do zero e é uma coisa não trivial de se fazer. As chances de sucesso executando ./configure; make; make install
para qualquer bit aleatório do software POSIX, sob o Cygwin, são muito baixas. Dito isto: eles têm uma extensa lista de softwares pré-compilados em seu repositório que você pode extrair e uma lista de desenvolvedores muito ativa na qual você pode fazer perguntas se realmente quiser seguir esse caminho. Mas se você não estiver confortável trabalhando com a fonte (e realmente, você estará trabalhando em problemas de dependência e problemas de cabeçalho para fazer com que compile ... esteja lá, tenha as cicatrizes) então construir um aplicativo a partir do código-fonte para o Cygwin é não para você.
O FreeBSD é, como você apontou, um sistema operacional completo . Não é uma camada de compatibilidade no topo de um sistema operacional. Você terá uma taxa muito maior de sucesso construindo coisas da fonte, porque é uma plataforma primária para a maioria dos aplicativos. Considerando que a construção para o Cygwin raramente faz parte dos planos para um desenvolvedor de aplicativos e, portanto, raramente é suportado por sistemas de compilação com os quais os aplicativos são enviados (configuração e criação do Gnu, por exemplo).