diff --git a/docker/dist/entry_point.sh b/docker/dist/entry_point.sh index 469884834..ee761d099 100755 --- a/docker/dist/entry_point.sh +++ b/docker/dist/entry_point.sh @@ -32,23 +32,37 @@ if [[ "${PLATFORM}" == "Windows_amd64" ]]; then deps-common build/generate_makefile # This can be reduced to `make CC=... ...` when it becomes possible to # replace `CC=gcc` with `CC=$(CC)` in "vendor/nimbus-build-system/makefiles/targets.mk". + CC=x86_64-w64-mingw32.static-gcc + CXX=x86_64-w64-mingw32.static-g++ make \ -j$(nproc) \ -C vendor/nim-nat-traversal/vendor/miniupnp/miniupnpc \ -f Makefile.mingw \ - CC=x86_64-w64-mingw32.static-gcc \ + CC="${CC}" \ libminiupnpc.a &>/dev/null make \ -j$(nproc) \ -C vendor/nim-nat-traversal/vendor/libnatpmp-upstream \ - CC=x86_64-w64-mingw32.static-gcc \ + CC="${CC}" \ CFLAGS="-Wall -Os -DWIN32 -DNATPMP_STATICLIB -DENABLE_STRNATPMPERR -DNATPMP_MAX_RETRIES=4 ${CFLAGS}" \ libnatpmp.a &>/dev/null + # We set CXX and add CXXFLAGS for libunwind's C++ code, even though we don't + # use those C++ objects. I don't see an easy way of disabling the C++ parts in + # libunwind itself. + # + # "libunwind.a" combines objects produced from C and C++ code. Even though we + # don't link any C++-generated objects, the linker still checks them for + # undefined symbols, so we're forced to use g++ as a linker wrapper. + # For some reason, macOS's Clang doesn't need this trick, nor do native (and + # newer) Mingw-w64 toolchains on Windows. make \ -j$(nproc) \ - USE_LIBBACKTRACE=0 \ + CC="${CC}" \ + CXX="${CXX}" \ + CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS -D_WIN32_WINNT=0x0600" \ + USE_VENDORED_LIBUNWIND=1 \ LOG_LEVEL="TRACE" \ - NIMFLAGS="-d:disableMarchNative -d:chronicles_sinks=textlines -d:chronicles_colors=none --os:windows --gcc.exe=x86_64-w64-mingw32.static-gcc --gcc.linkerexe=x86_64-w64-mingw32.static-gcc --passL:-static" \ + NIMFLAGS="-d:disableMarchNative -d:chronicles_sinks=textlines -d:chronicles_colors=none --os:windows --gcc.exe=${CC} --gcc.linkerexe=${CXX} --passL:-static" \ ${BINARIES} elif [[ "${PLATFORM}" == "Linux_arm32v7" ]]; then CC="arm-linux-gnueabihf-gcc" @@ -59,7 +73,6 @@ elif [[ "${PLATFORM}" == "Linux_arm32v7" ]]; then deps-common build/generate_makefile make \ -j$(nproc) \ - USE_LIBBACKTRACE=0 \ LOG_LEVEL="TRACE" \ CC="${CC}" \ NIMFLAGS="-d:disableMarchNative -d:chronicles_sinks=textlines -d:chronicles_colors=none --cpu:arm --gcc.exe=${CC} --gcc.linkerexe=${CC}" \ @@ -74,7 +87,6 @@ elif [[ "${PLATFORM}" == "Linux_arm64v8" ]]; then deps-common build/generate_makefile make \ -j$(nproc) \ - USE_LIBBACKTRACE=0 \ LOG_LEVEL="TRACE" \ CC="${CC}" \ NIMFLAGS="-d:disableMarchNative -d:chronicles_sinks=textlines -d:chronicles_colors=none --cpu:arm64 --gcc.exe=${CC} --gcc.linkerexe=${CC}" \ diff --git a/vendor/nim-libbacktrace b/vendor/nim-libbacktrace index 8121c08e0..40be35148 160000 --- a/vendor/nim-libbacktrace +++ b/vendor/nim-libbacktrace @@ -1 +1 @@ -Subproject commit 8121c08e0e7bdf92f86012b4af2330434fa7ed5d +Subproject commit 40be35148e87747666c3afd78fa678079406eac7