From 470f3084ebb07f1161127263685cc4f431d78ffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Sun, 11 Dec 2022 15:06:06 +0100 Subject: [PATCH] docker: Build MinGW with -mcmodel=small. (cherry picked from commit c90d4c34d8050ab3b314d5a6243eb36e0c7e9a5c) --- docker/Makefile | 14 ++++++++++++++ docker/gcc.Dockerfile.in | 1 + docker/mingw-crt.Dockerfile.in | 3 ++- docker/mingw-pthreads.Dockerfile.in | 1 + 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/docker/Makefile b/docker/Makefile index 4d2bf076..522397f4 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -61,19 +61,23 @@ DOCKER = docker %-i686.Dockerfile.in: %.Dockerfile.in sed -re 's!@ARCH@!i686!g' \ + -re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \ $< >$@ %-x86_64.Dockerfile.in: %.Dockerfile.in sed -re 's!@ARCH@!x86_64!g' \ + -re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \ $< >$@ %-linux-gnu.Dockerfile.in: %.Dockerfile.in sed -re 's!@TARGET@!linux-gnu!g' \ + -re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \ -re 's!@TARGET_FLAGS@!$(TARGET_FLAGS)!g' \ $< >$@ %-w64-mingw32.Dockerfile.in: %.Dockerfile.in sed -re 's!@TARGET@!w64-mingw32!g' \ + -re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \ -re 's!@TARGET_FLAGS@!$(TARGET_FLAGS)!g' \ $< >$@ @@ -118,9 +122,15 @@ $(eval $(call create-binutils-rules,i686,linux-gnu)) $(eval $(call create-binutils-rules,x86_64,w64-mingw32)) $(eval $(call create-binutils-rules,x86_64,linux-gnu)) +MINGW_ARCH_FLAGS_crt-x86_64 = --disable-lib32 CFLAGS="-mcmodel=small" +MINGW_ARCH_FLAGS_crt-i686 = --disable-lib64 +MINGW_ARCH_FLAGS_pthread-x86_64 = CFLAGS="-mcmodel=small" +MINGW_ARCH_FLAGS_pthread-i686 = + define create-mingw-rules .PHONY: mingw-$(2)-$(1) all mingw: mingw-$(2)-$(1) +mingw-$(2)-$(1): ARCH_FLAGS = $(MINGW_ARCH_FLAGS_$(2)-$(1)) mingw-$(2)-$(1): mingw-$(2)-$(1).Dockerfile | binutils rm -rf build; mkdir -p build $(DOCKER) build -f $$< \ @@ -146,12 +156,16 @@ $(eval $(call create-mingw-rules,x86_64,crt)) $(eval $(call create-mingw-rules,x86_64,pthreads)) $(eval $(call create-mingw-rules,x86_64,widl)) +GCC_ARCH_FLAGS_x86_64 = CFLAGS_FOR_TARGET="-mcmodel=small" CXXFLAGS_FOR_TARGET="-mcmodel=small" +GCC_ARCH_FLAGS_i686 = + GCC_TARGET_FLAGS_w64-mingw32 = --disable-shared GCC_TARGET_FLAGS_linux-gnu = define create-gcc-rules .PHONY: gcc-$(1)-$(2) all gcc: gcc-$(1)-$(2) +gcc-$(1)-$(2): ARCH_FLAGS = $(GCC_ARCH_FLAGS_$(1)) gcc-$(1)-$(2): TARGET_FLAGS = $(GCC_TARGET_FLAGS_$(2)) gcc-$(1)-$(2): gcc-$(1)-$(2).Dockerfile | mingw rm -rf build; mkdir -p build diff --git a/docker/gcc.Dockerfile.in b/docker/gcc.Dockerfile.in index 07236a4e..e13bb7fe 100644 --- a/docker/gcc.Dockerfile.in +++ b/docker/gcc.Dockerfile.in @@ -40,6 +40,7 @@ RUN wget -q @GCC_URLBASE@/@GCC_SOURCE@ \ --with-system-mpfr \ --with-system-zlib \ --with-tune=core-avx2 \ + @ARCH_FLAGS@ \ MAKEINFO=true \ && make --quiet -j@J@ MAKEINFO=true CFLAGS="-static --static" LDFLAGS="-s -static --static" \ && make --quiet -j@J@ MAKEINFO=true CFLAGS="-static --static" LDFLAGS="-s -static --static" install-strip DESTDIR=/opt \ diff --git a/docker/mingw-crt.Dockerfile.in b/docker/mingw-crt.Dockerfile.in index 11953dd0..1d62cd64 100644 --- a/docker/mingw-crt.Dockerfile.in +++ b/docker/mingw-crt.Dockerfile.in @@ -13,7 +13,8 @@ RUN wget -q @MINGW_URLBASE@/@MINGW_SOURCE@ \ --prefix=/usr/@ARCH@-w64-mingw32/ \ --host=@ARCH@-w64-mingw32 \ --enable-wildcard \ - MAKEINFO=true || cat config.log \ + @ARCH_FLAGS@ \ + MAKEINFO=true \ && make --quiet -j@J@ MAKEINFO=true \ && make --quiet -j@J@ MAKEINFO=true install-strip DESTDIR=/opt \ && rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \ diff --git a/docker/mingw-pthreads.Dockerfile.in b/docker/mingw-pthreads.Dockerfile.in index ab157134..c0d7d163 100644 --- a/docker/mingw-pthreads.Dockerfile.in +++ b/docker/mingw-pthreads.Dockerfile.in @@ -15,6 +15,7 @@ RUN wget -q @MINGW_URLBASE@/@MINGW_SOURCE@ \ --prefix=/usr/@ARCH@-w64-mingw32/ \ --host=@ARCH@-w64-mingw32 \ --disable-shared \ + @ARCH_FLAGS@ \ MAKEINFO=true \ && make --quiet -j@J@ MAKEINFO=true \ && make --quiet -j@J@ MAKEINFO=true install-strip DESTDIR=/opt \