tinygo/builder
Ayke van Laethem 403d93560b builder: build static binaries using musl on Linux
This commit adds support for musl-libc and uses it by default on Linux.
The main benefit of it is that binaries are always statically linked
instead of depending on the host libc, even when using CGo.

Advantages:
  - The resulting binaries are always statically linked.
  - No need for any tools on the host OS, like a compiler, linker, or
    libc in a release build of TinyGo.
  - This also simplifies cross compilation as no cross compiler is
    needed (it's all built into the TinyGo release build).

Disadvantages:
  - Binary size increases by 5-6 kilobytes if -no-debug is used. Binary
    size increases by a much larger margin when debugging symbols are
    included (the default behavior) because musl is built with debugging
    symbols enabled.
  - Musl does things a bit differently than glibc, and some CGo code
    might rely on the glibc behavior.
  - The first build takes a bit longer because musl needs to be built.

As an additional bonus, time is now obtained from the system in a way
that fixes the Y2038 problem because musl has been a bit more agressive
in switching to 64-bit time_t.
2021-11-04 17:15:38 +01:00
..
ar.go builder: reduce number of open files 2021-11-04 17:15:38 +01:00
build.go builder: build static binaries using musl on Linux 2021-11-04 17:15:38 +01:00
builder_test.go targets: add CPU property everywhere 2021-11-03 23:03:44 +01:00
builtins.go builder: build static binaries using musl on Linux 2021-11-04 17:15:38 +01:00
cc.go builder: add missing error check for ioutil.TempFile() 2021-09-08 15:21:31 +02:00
cc1as.cpp all: switch to LLVM 11 for static builds 2020-12-10 07:01:32 +01:00
cc1as.h main: switch to LLVM 10 2020-04-09 20:23:51 +02:00
cc_test.go builder: cache C and assembly file outputs 2021-04-05 20:52:04 +02:00
clang.cpp all: switch to LLVM 11 for static builds 2020-12-10 07:01:32 +01:00
commands.go main: implement tinygo lldb subcommand 2021-10-05 06:26:21 +02:00
config.go main: test other architectures by specifying a different GOARCH 2021-10-04 18:22:55 +02:00
elfpatch.go rp2040: patch elf to checksum 2nd stage boot 2021-06-17 12:10:04 +02:00
env.go Make lib64 clang include path check more robust. 2020-11-04 00:04:33 +01:00
error.go compiler: add location information to the IR checker 2019-12-21 20:49:51 +01:00
esp.go esp32c3: add support for this chip 2021-09-16 20:13:04 +02:00
jobs.go main: add -p flag to set parallelism 2021-11-04 17:15:38 +01:00
library.go builder: build static binaries using musl on Linux 2021-11-04 17:15:38 +01:00
lld.cpp main: switch to LLVM 10 2020-04-09 20:23:51 +02:00
musl.go builder: build static binaries using musl on Linux 2021-11-04 17:15:38 +01:00
nrfutil.go support flashing pca10059 from windows 2021-06-08 14:17:04 +02:00
objcopy.go main: add initial support for (in-development) LLVM 11 2020-10-13 20:23:50 +02:00
picolibc.go builder: build static binaries using musl on Linux 2021-11-04 17:15:38 +01:00
sizes.go builder: add support for -size= flag for WebAssembly 2021-11-04 12:34:23 +01:00
tools-builtin.go builder: run tools (clang, ...) as separate processes 2020-04-03 12:41:44 +02:00
tools-external.go builder: run tools (clang, ...) as separate processes 2020-04-03 12:41:44 +02:00
tools.go main: implement tinygo lldb subcommand 2021-10-05 06:26:21 +02:00
uf2.go all: fix staticcheck warnings 2021-09-27 15:47:12 +02:00