mirror of https://github.com/tinygo-org/tinygo.git
wasmstm32webassemblymicrocontrollerarmavrspiwasiadafruitarduinocircuitplayground-expressgpioi2cllvmmicrobitnrf51nrf52nrf52840samd21tinygo
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
245 lines
5.7 KiB
245 lines
5.7 KiB
package builder
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/tinygo-org/tinygo/goenv"
|
|
)
|
|
|
|
// Picolibc is a C library for bare metal embedded devices. It was originally
|
|
// based on newlib.
|
|
var Picolibc = Library{
|
|
name: "picolibc",
|
|
makeHeaders: func(target, includeDir string) error {
|
|
f, err := os.Create(filepath.Join(includeDir, "picolibc.h"))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return f.Close()
|
|
},
|
|
cflags: func(target, headerPath string) []string {
|
|
picolibcDir := filepath.Join(goenv.Get("TINYGOROOT"), "lib/picolibc/newlib/libc")
|
|
return []string{
|
|
"-Werror",
|
|
"-Wall",
|
|
"-std=gnu11",
|
|
"-D_COMPILING_NEWLIB",
|
|
"-DHAVE_ALIAS_ATTRIBUTE",
|
|
"-DTINY_STDIO",
|
|
"-nostdlibinc",
|
|
"-isystem", picolibcDir + "/include",
|
|
"-I" + picolibcDir + "/tinystdio",
|
|
"-I" + headerPath,
|
|
}
|
|
},
|
|
sourceDir: "lib/picolibc/newlib/libc",
|
|
librarySources: func(target string) []string {
|
|
return picolibcSources
|
|
},
|
|
}
|
|
|
|
var picolibcSources = []string{
|
|
"../../../picolibc-stdio.c",
|
|
|
|
"tinystdio/asprintf.c",
|
|
"tinystdio/atod_engine.c",
|
|
"tinystdio/atod_ryu.c",
|
|
"tinystdio/atof_engine.c",
|
|
"tinystdio/atof_ryu.c",
|
|
//"tinystdio/atold_engine.c", // have_long_double and not long_double_equals_double
|
|
"tinystdio/clearerr.c",
|
|
"tinystdio/compare_exchange.c",
|
|
"tinystdio/dtoa_data.c",
|
|
"tinystdio/dtoa_engine.c",
|
|
"tinystdio/dtoa_ryu.c",
|
|
"tinystdio/ecvtbuf.c",
|
|
"tinystdio/ecvt.c",
|
|
"tinystdio/ecvt_data.c",
|
|
"tinystdio/ecvtfbuf.c",
|
|
"tinystdio/ecvtf.c",
|
|
"tinystdio/ecvtf_data.c",
|
|
"tinystdio/exchange.c",
|
|
//"tinystdio/fclose.c", // posix-io
|
|
"tinystdio/fcvtbuf.c",
|
|
"tinystdio/fcvt.c",
|
|
"tinystdio/fcvtfbuf.c",
|
|
"tinystdio/fcvtf.c",
|
|
"tinystdio/fdevopen.c",
|
|
//"tinystdio/fdopen.c", // posix-io
|
|
"tinystdio/feof.c",
|
|
"tinystdio/ferror.c",
|
|
"tinystdio/fflush.c",
|
|
"tinystdio/fgetc.c",
|
|
"tinystdio/fgets.c",
|
|
"tinystdio/fileno.c",
|
|
"tinystdio/filestrget.c",
|
|
"tinystdio/filestrputalloc.c",
|
|
"tinystdio/filestrput.c",
|
|
//"tinystdio/fopen.c", // posix-io
|
|
"tinystdio/fprintf.c",
|
|
"tinystdio/fputc.c",
|
|
"tinystdio/fputs.c",
|
|
"tinystdio/fread.c",
|
|
"tinystdio/fscanf.c",
|
|
"tinystdio/fseek.c",
|
|
"tinystdio/ftell.c",
|
|
"tinystdio/ftoa_data.c",
|
|
"tinystdio/ftoa_engine.c",
|
|
"tinystdio/ftoa_ryu.c",
|
|
"tinystdio/fwrite.c",
|
|
"tinystdio/gcvtbuf.c",
|
|
"tinystdio/gcvt.c",
|
|
"tinystdio/gcvtfbuf.c",
|
|
"tinystdio/gcvtf.c",
|
|
"tinystdio/getchar.c",
|
|
"tinystdio/gets.c",
|
|
"tinystdio/matchcaseprefix.c",
|
|
"tinystdio/perror.c",
|
|
//"tinystdio/posixiob.c", // posix-io
|
|
//"tinystdio/posixio.c", // posix-io
|
|
"tinystdio/printf.c",
|
|
"tinystdio/putchar.c",
|
|
"tinystdio/puts.c",
|
|
"tinystdio/ryu_divpow2.c",
|
|
"tinystdio/ryu_log10.c",
|
|
"tinystdio/ryu_log2pow5.c",
|
|
"tinystdio/ryu_pow5bits.c",
|
|
"tinystdio/ryu_table.c",
|
|
"tinystdio/ryu_umul128.c",
|
|
"tinystdio/scanf.c",
|
|
"tinystdio/setbuf.c",
|
|
"tinystdio/setvbuf.c",
|
|
//"tinystdio/sflags.c", // posix-io
|
|
"tinystdio/snprintf.c",
|
|
"tinystdio/snprintfd.c",
|
|
"tinystdio/snprintff.c",
|
|
"tinystdio/sprintf.c",
|
|
"tinystdio/sprintfd.c",
|
|
"tinystdio/sprintff.c",
|
|
"tinystdio/sscanf.c",
|
|
"tinystdio/strfromd.c",
|
|
"tinystdio/strfromf.c",
|
|
"tinystdio/strtod.c",
|
|
"tinystdio/strtod_l.c",
|
|
"tinystdio/strtof.c",
|
|
//"tinystdio/strtold.c", // have_long_double and not long_double_equals_double
|
|
//"tinystdio/strtold_l.c", // have_long_double and not long_double_equals_double
|
|
"tinystdio/ungetc.c",
|
|
"tinystdio/vasprintf.c",
|
|
"tinystdio/vfiprintf.c",
|
|
"tinystdio/vfiscanf.c",
|
|
"tinystdio/vfprintf.c",
|
|
"tinystdio/vfprintff.c",
|
|
"tinystdio/vfscanf.c",
|
|
"tinystdio/vfscanff.c",
|
|
"tinystdio/vprintf.c",
|
|
"tinystdio/vscanf.c",
|
|
"tinystdio/vsnprintf.c",
|
|
"tinystdio/vsprintf.c",
|
|
"tinystdio/vsscanf.c",
|
|
|
|
"string/bcmp.c",
|
|
"string/bcopy.c",
|
|
"string/bzero.c",
|
|
"string/explicit_bzero.c",
|
|
"string/ffsl.c",
|
|
"string/ffsll.c",
|
|
"string/fls.c",
|
|
"string/flsl.c",
|
|
"string/flsll.c",
|
|
"string/gnu_basename.c",
|
|
"string/index.c",
|
|
"string/memccpy.c",
|
|
"string/memchr.c",
|
|
"string/memcmp.c",
|
|
"string/memcpy.c",
|
|
"string/memmem.c",
|
|
"string/memmove.c",
|
|
"string/mempcpy.c",
|
|
"string/memrchr.c",
|
|
"string/memset.c",
|
|
"string/rawmemchr.c",
|
|
"string/rindex.c",
|
|
"string/stpcpy.c",
|
|
"string/stpncpy.c",
|
|
"string/strcasecmp.c",
|
|
"string/strcasecmp_l.c",
|
|
"string/strcasestr.c",
|
|
"string/strcat.c",
|
|
"string/strchr.c",
|
|
"string/strchrnul.c",
|
|
"string/strcmp.c",
|
|
"string/strcoll.c",
|
|
"string/strcoll_l.c",
|
|
"string/strcpy.c",
|
|
"string/strcspn.c",
|
|
"string/strdup.c",
|
|
"string/strerror.c",
|
|
"string/strerror_r.c",
|
|
"string/strlcat.c",
|
|
"string/strlcpy.c",
|
|
"string/strlen.c",
|
|
"string/strlwr.c",
|
|
"string/strncasecmp.c",
|
|
"string/strncasecmp_l.c",
|
|
"string/strncat.c",
|
|
"string/strncmp.c",
|
|
"string/strncpy.c",
|
|
"string/strndup.c",
|
|
"string/strnlen.c",
|
|
"string/strnstr.c",
|
|
"string/strpbrk.c",
|
|
"string/strrchr.c",
|
|
"string/strsep.c",
|
|
"string/strsignal.c",
|
|
"string/strspn.c",
|
|
"string/strstr.c",
|
|
"string/strtok.c",
|
|
"string/strtok_r.c",
|
|
"string/strupr.c",
|
|
"string/strverscmp.c",
|
|
"string/strxfrm.c",
|
|
"string/strxfrm_l.c",
|
|
"string/swab.c",
|
|
"string/timingsafe_bcmp.c",
|
|
"string/timingsafe_memcmp.c",
|
|
"string/u_strerr.c",
|
|
"string/wcpcpy.c",
|
|
"string/wcpncpy.c",
|
|
"string/wcscasecmp.c",
|
|
"string/wcscasecmp_l.c",
|
|
"string/wcscat.c",
|
|
"string/wcschr.c",
|
|
"string/wcscmp.c",
|
|
"string/wcscoll.c",
|
|
"string/wcscoll_l.c",
|
|
"string/wcscpy.c",
|
|
"string/wcscspn.c",
|
|
"string/wcsdup.c",
|
|
"string/wcslcat.c",
|
|
"string/wcslcpy.c",
|
|
"string/wcslen.c",
|
|
"string/wcsncasecmp.c",
|
|
"string/wcsncasecmp_l.c",
|
|
"string/wcsncat.c",
|
|
"string/wcsncmp.c",
|
|
"string/wcsncpy.c",
|
|
"string/wcsnlen.c",
|
|
"string/wcspbrk.c",
|
|
"string/wcsrchr.c",
|
|
"string/wcsspn.c",
|
|
"string/wcsstr.c",
|
|
"string/wcstok.c",
|
|
"string/wcswidth.c",
|
|
"string/wcsxfrm.c",
|
|
"string/wcsxfrm_l.c",
|
|
"string/wcwidth.c",
|
|
"string/wmemchr.c",
|
|
"string/wmemcmp.c",
|
|
"string/wmemcpy.c",
|
|
"string/wmemmove.c",
|
|
"string/wmempcpy.c",
|
|
"string/wmemset.c",
|
|
"string/xpg_strerror_r.c",
|
|
}
|
|
|