# This file is part of MXE. See LICENSE.md for licensing information. PKG := gcc $(PKG)_WEBSITE := https://gcc.gnu.org/ $(PKG)_DESCR := GCC $(PKG)_IGNORE := $(PKG)_VERSION := 11.5.0 $(PKG)_RELEASE := $($(PKG)_VERSION) $(PKG)_CHECKSUM := a6e21868ead545cf87f0c01f84276e4b5281d672098591c1c896241f09363478 $(PKG)_SUBDIR := gcc-$($(PKG)_VERSION) $(PKG)_FILE := gcc-$($(PKG)_VERSION).tar.xz $(PKG)_URL := https://ftp.gnu.org/gnu/gcc/gcc-$($(PKG)_VERSION)/$($(PKG)_FILE) $(PKG)_URL_2 := https://www.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-$($(PKG)_VERSION)/$($(PKG)_FILE) $(PKG)_DEPS := binutils mingw-w64 $(addprefix $(BUILD)~,gmp isl mpc mpfr) define $(PKG)_UPDATE $(WGET) -q -O- 'https://ftp.gnu.org/gnu/gcc/?C=M;O=D' | \ grep -v 'gcc-6\|gcc-7' | \ $(SED) -n 's,.*'s presence to false when building target libgcc to prevent # a dependency on mmap(). If mman-win32 package has been installed when gcc is built # (which installs sys/mman.h), gcov (from libgcc) will depend on mmap(), and fail to link # (undefined reference to `mmap') when building with --coverage. ac_cv_header_sys_mman_h=no \ $(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' all-target-libgcc # `all-target-libstdc++-v3` sometimes has parallel failure $(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' all-target-libstdc++-v3 || $(MAKE) -C '$(BUILD_DIR)' -j 1 all-target-libstdc++-v3 $(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' $(MAKE) -C '$(BUILD_DIR)' -j 1 $(INSTALL_STRIP_TOOLCHAIN) $($(PKG)_POST_BUILD) endef define $(PKG)_POST_BUILD # - no non-trivial way to configure installation of *.dlls # each sudbir has it's own variations of variables like: # `toolexeclibdir` `install-toolexeclibLTLIBRARIES` etc. # and maintaining those would be cumbersome # - shared libgcc isn't installed to version-specific locations # - need to keep `--enable-version-specific-runtime-libs` otherwise # libraries go directly into $(PREFIX)/$(TARGET)/lib and are # harder to cleanup # - ignore rm failure as parallel build may have cleaned up, but # don't wildcard all libs so future additions will be detected $(and $(BUILD_SHARED), $(MAKE) -C '$(BUILD_DIR)/$(TARGET)/libgcc' -j 1 \ toolexecdir='$(PREFIX)/$(TARGET)/bin' \ SHLIB_SLIBDIR_QUAL= \ install-shared mv -v '$(PREFIX)/lib/gcc/$(TARGET)/$($(PKG)_RELEASE)/'*.dll '$(PREFIX)/$(TARGET)/bin/' -rm -v '$(PREFIX)/lib/gcc/$(TARGET)/'libgcc_s*.dll -rm -v '$(PREFIX)/lib/gcc/$(TARGET)/lib/'libgcc_s*.a -rmdir '$(PREFIX)/lib/gcc/$(TARGET)/lib/') # cc1libdir isn't passed to subdirs so install correctly and rm $(MAKE) -C '$(BUILD_DIR)/libcc1' -j 1 install cc1libdir='$(PREFIX)/lib/gcc/$(TARGET)/$($(PKG)_RELEASE)' -rm -f '$(PREFIX)/lib/'libcc1* # overwrite default specs to mimic stack protector handling of glibc # ./configure above doesn't do this '$(TARGET)-gcc' -dumpspecs > '$(PREFIX)/lib/gcc/$(TARGET)/$($(PKG)_RELEASE)/specs' $(SED) -i 's,-lmingwex,-lmingwex -lssp_nonshared -lssp,' '$(PREFIX)/lib/gcc/$(TARGET)/$($(PKG)_RELEASE)/specs' # compile test cd '$(PREFIX)/$(TARGET)/bin' && '$(TARGET)-gcc' \ -W -Wall -Werror -ansi -pedantic \ -D_FORTIFY_SOURCE=2 \ --coverage -fprofile-dir=. -v \ '$(TEST_FILE)' -o '$(PREFIX)/$(TARGET)/bin/test-$(PKG).exe' endef $(PKG)_BUILD_x86_64-w64-mingw32 = $(subst @gcc-crt-config-opts@,--disable-lib32,$($(PKG)_BUILD_mingw-w64)) $(PKG)_BUILD_i686-w64-mingw32 = $(subst @gcc-crt-config-opts@,--disable-lib64,$($(PKG)_BUILD_mingw-w64))