mirror of
https://github.com/shaka-project/shaka-packager.git
synced 2024-10-22 07:44:56 +00:00
9be7c2b1ac
This adds the option FULLY_STATIC to create fully-static executables. To create portable, fully-static release executables on Linux, we need to use musl instead of glibc. Static executables from glibc are not portable. The popular musl-gcc wrapper does not support C++, so instead we use a full musl cross-compiler toolchain in the build workflow. To build FULLY_STATIC, the user must point to the appropriate cross-compiler, as we do in the workflow. On systems where musl is the native libc (such as Alpine Linux), this is not necessary. I have also read that musl's allocator is not very fast in multi-threaded applications. So when FULLY_STATIC is enabled, we will also enable mimalloc, a replacement allocator that is very fast. I tested a very basic packaging command to compare speeds of dynamic glibc, static musl, and static musl+mimalloc: dynamic glibc: runs: 2.527, 2.798, 2.703, 2.756, 2.959 avg = 2.749, std dev = 0.156s static musl: runs: 2.813, 2.920, 3.129, 3.003, 2.738 avg = 2.921s, std dev = 0.154s static musl+mimalloc: runs: 2.291, 2.034, 2.415, 2.303, 2.265 avg = 2.262s, std dev = 0.140s The mimalloc build is 82% faster than musl default allocator, 77% faster than glibc, and has more consistent runtime characteristics (lower standard deviation).
40 lines
1.7 KiB
Plaintext
40 lines
1.7 KiB
Plaintext
[submodule "packager/third_party/googletest/source"]
|
|
path = packager/third_party/googletest/source
|
|
url = https://github.com/google/googletest
|
|
[submodule "packager/third_party/abseil-cpp/source"]
|
|
path = packager/third_party/abseil-cpp/source
|
|
url = https://github.com/abseil/abseil-cpp
|
|
[submodule "packager/third_party/curl/source"]
|
|
path = packager/third_party/curl/source
|
|
url = https://github.com/curl/curl
|
|
[submodule "packager/third_party/json/source"]
|
|
path = packager/third_party/json/source
|
|
url = https://github.com/nlohmann/json
|
|
[submodule "packager/third_party/mbedtls/source"]
|
|
path = packager/third_party/mbedtls/source
|
|
url = https://github.com/Mbed-TLS/mbedtls
|
|
[submodule "packager/third_party/zlib/source"]
|
|
path = packager/third_party/zlib/source
|
|
url = https://github.com/madler/zlib
|
|
[submodule "packager/third_party/libpng/source"]
|
|
path = packager/third_party/libpng/source
|
|
url = https://github.com/glennrp/libpng
|
|
[submodule "packager/third_party/libwebm/source"]
|
|
path = packager/third_party/libwebm/source
|
|
url = https://github.com/webmproject/libwebm
|
|
[submodule "packager/third_party/libxml2/source"]
|
|
path = packager/third_party/libxml2/source
|
|
url = https://github.com/GNOME/libxml2
|
|
[submodule "packager/third_party/protobuf/source"]
|
|
path = packager/third_party/protobuf/source
|
|
url = https://github.com/protocolbuffers/protobuf
|
|
[submodule "packager/third_party/mongoose/source"]
|
|
path = packager/third_party/mongoose/source
|
|
url = https://github.com/cesanta/mongoose
|
|
[submodule "packager/third_party/c-ares/source"]
|
|
path = packager/third_party/c-ares/source
|
|
url = https://github.com/c-ares/c-ares
|
|
[submodule "packager/third_party/mimalloc/source"]
|
|
path = packager/third_party/mimalloc/source
|
|
url = https://github.com/microsoft/mimalloc
|