musl as a whole is licensed under the GNU LGPL version 2.1 or later.
See the file COPYING for the text of this license.

See below for the copyright status on all code included in musl:

The TRE regular expression implementation (src/regex/reg* and
src/regex/tre*) is Copyright © 2001-2006 Ville Laurikari and licensed
under the terms of the GNU LGPL version 2.1 or later. The included
version was heavily modified in Spring 2006 by Rich Felker in the
interests of size, simplicity, and namespace cleanliness.

Most of the math library code (src/math/*) is Copyright © 1993 Sun
Microsystems, Inc. Some files are Copyright © 2003 Steven G. Kargl and
labelled as such. All have been licensed under extremely permissive
terms which are compatible with the GNU LGPL. See the comments in the
individual files for details.

The implementation of DES for crypt (src/misc/crypt.c) is Copyright ©
1994 David Burren. It is licensed under a BSD license compatible with
the GNU LGPL.

The x86_64 port was written by Nicholas J. Kain. See individual files
for their copyright status.

All files which have no copyright comments are original works
Copyright © 2005-2011 Rich Felker, the main author of this library.
The decision to exclude such comments is intentional, as it should be
possible to carry around the complete source code on tiny storage
media. All public header files (include/*) should be treated as Public
Domain as they intentionally contain no content which can be covered
by copyright. Some source modules may fall in this category as well.
If you believe that a file is so trivial that it should be in the
Public Domain, please contact me and, if I agree, I will explicitly
release it from copyright.

The following files are trivial, in my opinion not copyrightable in
the first place, and hereby explicitly released to the Public Domain:

All public headers: include/*
Startup files: crt/*
