diff --git a/mingw-gcc.spec b/mingw-gcc.spec index 27d8da0..c4002d0 100644 --- a/mingw-gcc.spec +++ b/mingw-gcc.spec @@ -1,3 +1,4 @@ +%global mingw_build_ucrt64 1 %global __os_install_post /usr/lib/rpm/brp-compress %{nil} # Causes build failures @@ -11,9 +12,9 @@ # 5. Build mingw-gcc with bootstrap=0, enable_libgomp=1 # Set this to one when mingw-crt isn't built yet -%global bootstrap 0 +%global bootstrap 1 # Set this one to zero when mingw-winpthreads isn't built yet -%global enable_libgomp 1 +%global enable_libgomp 0 %if 0%{?rhel} > 8 %global build_isl 0 @@ -33,7 +34,7 @@ Name: mingw-gcc Version: %{gcc_version} -Release: 5%{?dist} +Release: 6%{?dist} Summary: MinGW Windows cross-compiler (GCC) for C License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions @@ -55,12 +56,15 @@ Patch1: 0020-libgomp-Don-t-hard-code-MS-printf-attributes.patch BuildRequires: gcc-c++ BuildRequires: make BuildRequires: texinfo -BuildRequires: mingw32-filesystem >= 95 -BuildRequires: mingw64-filesystem >= 95 +BuildRequires: mingw32-filesystem >= 133 +BuildRequires: mingw64-filesystem >= 133 +BuildRequires: ucrt64-filesystem >= 133 BuildRequires: mingw32-binutils BuildRequires: mingw64-binutils +BuildRequires: ucrt64-binutils BuildRequires: mingw32-headers BuildRequires: mingw64-headers +BuildRequires: ucrt64-headers BuildRequires: gmp-devel BuildRequires: mpfr-devel BuildRequires: libmpc-devel @@ -74,9 +78,11 @@ BuildRequires: isl-devel = %{isl_version} %if 0%{bootstrap} == 0 BuildRequires: mingw32-crt BuildRequires: mingw64-crt +BuildRequires: ucrt64-crt %if 0%{enable_libgomp} BuildRequires: mingw32-winpthreads BuildRequires: mingw64-winpthreads +BuildRequires: ucrt64-winpthreads %endif %if 0%{enable_tests} BuildRequires: wine @@ -109,7 +115,7 @@ MinGW Windows cross-compiler (GCC) for C for the win32 target. %package -n mingw32-cpp Summary: MinGW Windows cross-C Preprocessor for the win32 target # NB: Explicit mingw32-filesystem dependency is REQUIRED here. -Requires: mingw32-filesystem >= 95 +Requires: mingw32-filesystem >= 133 %description -n mingw32-cpp MinGW Windows cross-C Preprocessor for the win32 target. @@ -177,7 +183,7 @@ MinGW Windows cross-compiler (GCC) for C for the win64 target. %package -n mingw64-cpp Summary: MinGW Windows cross-C Preprocessor for the win64 target. # NB: Explicit mingw64-filesystem dependency is REQUIRED here. -Requires: mingw64-filesystem >= 95 +Requires: mingw64-filesystem >= 133 %description -n mingw64-cpp MinGW Windows cross-C Preprocessor for the win64 target @@ -226,6 +232,74 @@ This package contains GCC shared support library which is needed for OpenMP v3.0 support for the win32 target. %endif +############################################################################### +# UCRT64 +############################################################################### +%package -n ucrt64-gcc +Summary: MinGW Windows cross-compiler (GCC) for C for the win64 target +Requires: ucrt64-binutils +Requires: ucrt64-headers +Requires: ucrt64-cpp +%if 0%{bootstrap} == 0 +Requires: ucrt64-crt +%endif + +%description -n ucrt64-gcc +MinGW Windows cross-compiler (GCC) for C for the win64 target. + + +%package -n ucrt64-cpp +Summary: MinGW Windows cross-C Preprocessor for the win64 target. +# NB: Explicit ucrt64-filesystem dependency is REQUIRED here. +Requires: ucrt64-filesystem >= 133 + +%description -n ucrt64-cpp +MinGW Windows cross-C Preprocessor for the win64 target + + +%package -n ucrt64-gcc-c++ +Summary: MinGW Windows cross-compiler for C++ for the win64 target +Requires: ucrt64-gcc = %{version}-%{release} + +%description -n ucrt64-gcc-c++ +MinGW Windows cross-compiler for C++ for the win64 target. + + +%package -n ucrt64-gcc-objc +Summary: MinGW Windows cross-compiler support for Objective C for the win64 target +Requires: ucrt64-gcc = %{version}-%{release} + +%description -n ucrt64-gcc-objc +MinGW Windows cross-compiler support for Objective C for the win64 target. + + +%package -n ucrt64-gcc-objc++ +Summary: MinGW Windows cross-compiler support for Objective C++ for the win64 target +Requires: ucrt64-gcc-c++ = %{version}-%{release} +Requires: ucrt64-gcc-objc = %{version}-%{release} + +%description -n ucrt64-gcc-objc++ +MinGW Windows cross-compiler support for Objective C++ for the win64 target. + + +%package -n ucrt64-gcc-gfortran +Summary: MinGW Windows cross-compiler for FORTRAN for the win64 target +Requires: ucrt64-gcc = %{version}-%{release} + +%description -n ucrt64-gcc-gfortran +MinGW Windows cross-compiler for FORTRAN for the win64 target. + + +%if 0%{enable_libgomp} +%package -n ucrt64-libgomp +Summary: GCC OpenMP v3.0 shared support library for the win64 target +Requires: ucrt64-gcc = %{version}-%{release} + +%description -n ucrt64-libgomp +This package contains GCC shared support library which is +needed for OpenMP v3.0 support for the win32 target. +%endif + %prep %autosetup -p1 -n %{srcdir} @@ -287,6 +361,12 @@ pushd build_win64 ../configure $configure_args --target=%{mingw64_target} --with-sysroot=%{mingw64_sysroot} --with-gxx-include-dir=%{mingw64_includedir}/c++ popd +# ucrt64 +mkdir build_ucrt64 +pushd build_ucrt64 + ../configure $configure_args --target=%{ucrt64_target} --with-sysroot=%{ucrt64_sysroot} --with-gxx-include-dir=%{ucrt64_includedir}/c++ +popd + # If we're bootstrapping, only build the GCC core %if 0%{bootstrap} %mingw_make_build all-gcc @@ -414,11 +494,27 @@ mv %{buildroot}%{_prefix}/%{mingw64_target}/lib/libatomic-1.dll \ %endif %{buildroot}%{mingw64_bindir} +mkdir -p %{buildroot}%{ucrt64_bindir} +mv %{buildroot}%{_prefix}/%{ucrt64_target}/lib/libatomic-1.dll \ + %{buildroot}%{_prefix}/%{ucrt64_target}/lib/libgcc_s_seh-1.dll \ + %{buildroot}%{_prefix}/%{ucrt64_target}/lib/libssp-0.dll \ + %{buildroot}%{_prefix}/%{ucrt64_target}/lib/libstdc++-6.dll \ + %{buildroot}%{_prefix}/%{ucrt64_target}/lib/libobjc-4.dll \ + %{buildroot}%{_prefix}/%{ucrt64_target}/lib/libgfortran-5.dll \ + %{buildroot}%{_prefix}/%{ucrt64_target}/lib/libquadmath-0.dll \ +%if 0%{enable_libgomp} + %{buildroot}%{_prefix}/%{ucrt64_target}/lib/libgomp-1.dll \ +%endif + %{buildroot}%{ucrt64_bindir} + + # Various import libraries are placed in the wrong folder mkdir -p %{buildroot}%{mingw32_libdir} mkdir -p %{buildroot}%{mingw64_libdir} +mkdir -p %{buildroot}%{ucrt64_libdir} mv %{buildroot}%{_prefix}/%{mingw32_target}/lib/* %{buildroot}%{mingw32_libdir} mv %{buildroot}%{_prefix}/%{mingw64_target}/lib/* %{buildroot}%{mingw64_libdir} +mv %{buildroot}%{_prefix}/%{ucrt64_target}/lib/* %{buildroot}%{ucrt64_libdir} # Don't want the *.la files. find %{buildroot} -name '*.la' -delete @@ -429,12 +525,14 @@ find %{buildroot} -name '*.la' -delete # Drop those files for now as this looks like a bug in GCC rm -f %{buildroot}%{_bindir}/%{mingw32_target}-%{mingw32_target}-* rm -f %{buildroot}%{_bindir}/%{mingw64_target}-%{mingw64_target}-* +rm -f %{buildroot}%{_bindir}/%{ucrt64_target}-%{ucrt64_target}-* %if 0%{bootstrap} == 0 # HACK symlink libssp dll over import lib, otherwise linking with -lssp failes for mysterious reasons # Needed to build gdb and everything which adds -D_FORTIFY_SOURCES=... and -fstack-protector ln -sf %{mingw32_bindir}/libssp-0.dll %{buildroot}%{mingw32_libdir}/libssp.dll.a ln -sf %{mingw64_bindir}/libssp-0.dll %{buildroot}%{mingw64_libdir}/libssp.dll.a +ln -sf %{ucrt64_bindir}/libssp-0.dll %{buildroot}%{ucrt64_libdir}/libssp.dll.a %endif @@ -542,6 +640,58 @@ ln -sf %{mingw64_bindir}/libssp-0.dll %{buildroot}%{mingw64_libdir}/libssp.dll.a %{_mandir}/man1/%{mingw64_target}-lto-dump.1* %endif +%files -n ucrt64-gcc +%{_bindir}/%{ucrt64_target}-gcc +%{_bindir}/%{ucrt64_target}-gcc-%{version} +%{_bindir}/%{ucrt64_target}-gcc-ar +%{_bindir}/%{ucrt64_target}-gcc-nm +%{_bindir}/%{ucrt64_target}-gcc-ranlib +%{_bindir}/%{ucrt64_target}-gcov +%{_bindir}/%{ucrt64_target}-gcov-dump +%{_bindir}/%{ucrt64_target}-gcov-tool +%dir %{_prefix}/lib/gcc/%{ucrt64_target}/%{version} +%dir %{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/include-fixed +%dir %{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/include +%dir %{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/install-tools +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/include-fixed/README +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/include-fixed/*.h +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/include/*.h +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/install-tools/* +%{_libexecdir}/gcc/%{ucrt64_target}/%{version}/collect2 +%{_libexecdir}/gcc/%{ucrt64_target}/%{version}/lto-wrapper +%{_libexecdir}/gcc/%{ucrt64_target}/%{version}/install-tools +%{_mandir}/man1/%{ucrt64_target}-gcc.1* +%{_mandir}/man1/%{ucrt64_target}-gcov.1* +%{_mandir}/man1/%{ucrt64_target}-gcov-dump.1* +%{_mandir}/man1/%{ucrt64_target}-gcov-tool.1* + +# Non-bootstrap files +%if 0%{bootstrap} == 0 +%{_bindir}/%{ucrt64_target}-lto-dump +%{ucrt64_bindir}/libatomic-1.dll +%{ucrt64_bindir}/libgcc_s_seh-1.dll +%{ucrt64_bindir}/libssp-0.dll +%{ucrt64_libdir}/libatomic.a +%{ucrt64_libdir}/libatomic.dll.a +%{ucrt64_libdir}/libgcc_s.a +%{ucrt64_libdir}/libssp.a +%{ucrt64_libdir}/libssp.dll.a +%{ucrt64_libdir}/libssp_nonshared.a +%{ucrt64_libdir}/libstdc++fs.a +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/crtbegin.o +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/crtend.o +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/crtfastmath.o +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/libgcc.a +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/libgcc_eh.a +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/libgcov.a +%dir %{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/include/ssp +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/include/ssp/*.h +%{_libexecdir}/gcc/%{ucrt64_target}/%{version}/g++-mapper-server +%{_libexecdir}/gcc/%{ucrt64_target}/%{version}/lto1 +%{_libexecdir}/gcc/%{ucrt64_target}/%{version}/liblto_plugin.so* +%{_mandir}/man1/%{ucrt64_target}-lto-dump.1* +%endif + %files -n mingw32-cpp %{_bindir}/%{mingw32_target}-cpp %{_mandir}/man1/%{mingw32_target}-cpp.1* @@ -560,6 +710,15 @@ ln -sf %{mingw64_bindir}/libssp-0.dll %{buildroot}%{mingw64_libdir}/libssp.dll.a %dir %{_libexecdir}/gcc/%{mingw64_target} %{_libexecdir}/gcc/%{mingw64_target}/%{version}/cc1 +%files -n ucrt64-cpp +%{_bindir}/%{ucrt64_target}-cpp +%{_mandir}/man1/%{ucrt64_target}-cpp.1* +%dir %{_prefix}/lib/gcc/%{ucrt64_target} +%dir %{_prefix}/lib/gcc/%{ucrt64_target}/%{version} +%dir %{_libexecdir}/gcc/%{ucrt64_target}/%{version} +%dir %{_libexecdir}/gcc/%{ucrt64_target} +%{_libexecdir}/gcc/%{ucrt64_target}/%{version}/cc1 + %files -n mingw32-gcc-c++ %{_bindir}/%{mingw32_target}-g++ %{_bindir}/%{mingw32_target}-c++ @@ -592,6 +751,22 @@ ln -sf %{mingw64_bindir}/libssp-0.dll %{buildroot}%{mingw64_libdir}/libssp.dll.a %{mingw64_libdir}/libsupc++.a %endif +%files -n ucrt64-gcc-c++ +%{_bindir}/%{ucrt64_target}-g++ +%{_bindir}/%{ucrt64_target}-c++ +%{_mandir}/man1/%{ucrt64_target}-g++.1* +%{_libexecdir}/gcc/%{ucrt64_target}/%{version}/cc1plus + +# Non-bootstrap files +%if 0%{bootstrap} == 0 +%{ucrt64_includedir}/c++/ +%{ucrt64_bindir}/libstdc++-6.dll +%{ucrt64_libdir}/libstdc++.a +%{ucrt64_libdir}/libstdc++.dll.a +%{ucrt64_libdir}/libstdc++.dll.a-gdb.py +%{ucrt64_libdir}/libsupc++.a +%endif + %files -n mingw32-gcc-objc %{_libexecdir}/gcc/%{mingw32_target}/%{version}/cc1obj %if 0%{bootstrap} == 0 @@ -610,12 +785,24 @@ ln -sf %{mingw64_bindir}/libssp-0.dll %{buildroot}%{mingw64_libdir}/libssp.dll.a %{mingw64_libdir}/libobjc.dll.a %endif +%files -n ucrt64-gcc-objc +%{_libexecdir}/gcc/%{ucrt64_target}/%{version}/cc1obj +%if 0%{bootstrap} == 0 +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/include/objc/ +%{ucrt64_bindir}/libobjc-4.dll +%{ucrt64_libdir}/libobjc.a +%{ucrt64_libdir}/libobjc.dll.a +%endif + %files -n mingw32-gcc-objc++ %{_libexecdir}/gcc/%{mingw32_target}/%{version}/cc1objplus %files -n mingw64-gcc-objc++ %{_libexecdir}/gcc/%{mingw64_target}/%{version}/cc1objplus +%files -n ucrt64-gcc-objc++ +%{_libexecdir}/gcc/%{ucrt64_target}/%{version}/cc1objplus + %files -n mingw32-gcc-gfortran %{_bindir}/%{mingw32_target}-gfortran %{_mandir}/man1/%{mingw32_target}-gfortran.1* @@ -648,6 +835,22 @@ ln -sf %{mingw64_bindir}/libssp-0.dll %{buildroot}%{mingw64_libdir}/libssp.dll.a %{_prefix}/lib/gcc/%{mingw64_target}/%{version}/finclude %endif +%files -n ucrt64-gcc-gfortran +%{_bindir}/%{ucrt64_target}-gfortran +%{_mandir}/man1/%{ucrt64_target}-gfortran.1* +%{_libexecdir}/gcc/%{ucrt64_target}/%{version}/f951 +%if 0%{bootstrap} == 0 +%{ucrt64_bindir}/libgfortran-5.dll +%{ucrt64_bindir}/libquadmath-0.dll +%{ucrt64_libdir}/libgfortran.a +%{ucrt64_libdir}/libgfortran.dll.a +%{ucrt64_libdir}/libgfortran.spec +%{ucrt64_libdir}/libquadmath.a +%{ucrt64_libdir}/libquadmath.dll.a +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/libcaf_single.a +%{_prefix}/lib/gcc/%{ucrt64_target}/%{version}/finclude +%endif + %if 0%{enable_libgomp} %files -n mingw32-libgomp %{mingw32_bindir}/libgomp-1.dll @@ -660,10 +863,19 @@ ln -sf %{mingw64_bindir}/libssp-0.dll %{buildroot}%{mingw64_libdir}/libssp.dll.a %{mingw64_libdir}/libgomp.a %{mingw64_libdir}/libgomp.dll.a %{mingw64_libdir}/libgomp.spec + +%files -n ucrt64-libgomp +%{ucrt64_bindir}/libgomp-1.dll +%{ucrt64_libdir}/libgomp.a +%{ucrt64_libdir}/libgomp.dll.a +%{ucrt64_libdir}/libgomp.spec %endif %changelog +* Wed Feb 23 2022 Marc-André Lureau - 11.2.1-6 +- Add ucrt64 target (with bootstrap=1, enable_libgomp=0) + * Thu Jan 20 2022 Fedora Release Engineering - 11.2.1-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild