From e9dcdf727e5f77154929c3413b1bb23dc3ecdf3c Mon Sep 17 00:00:00 2001 From: Gleb Fotengauer-Malinovskiy Date: Fri, 17 Nov 2017 17:43:56 +0300 Subject: [PATCH] Introduce mips{,n32,64}{,el}, riscv64, and s390x architectures --- configure.ac | 10 ++++++++++ installplatform | 30 ++++++++++++++++++++++++++++++ macros.in | 24 ++++++++++++++++++++++++ rpm-4_0.spec | 6 +++--- rpmrc.in | 22 ++++++++++++++++++++++ 5 files changed, 89 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index b447f22..dc07c54 100644 --- a/configure.ac +++ b/configure.ac @@ -793,6 +793,16 @@ case "$build_os" in RPMCANONGNU='-gnueabi' RPMCANONGNUEABI='-gnueabi' ;; + *-gnuabin32) + build_os="${build_os%-gnuabin32}" + RPMCANONGNU='-gnuabin32' + RPMCANONGNUEABI='-gnuabin32' + ;; + *-gnuabi64) + build_os="${build_os%-gnuabi64}" + RPMCANONGNU='-gnuabi64' + RPMCANONGNUEABI='-gnuabi64' + ;; esac changequote(<, >) diff --git a/installplatform b/installplatform index f4b8197..d546726 100755 --- a/installplatform +++ b/installplatform @@ -48,12 +48,36 @@ case "$arch" in e2k*) SUBSTS='s,e2k.*,e2k, s,e2k.*,e2kv4, s,e2k.*,e2kv5, s,e2k.*,e2kv6, s,e2k.*,noarch,' ;; + mips) + SUBSTS='s,mips,mips, s,mips,noarch,' + ;; + mipsel) + SUBSTS='s,mipsel,mipsel, s,mipsel,noarch,' + ;; + mipsn32) + SUBSTS='s,mipsn32,mipsn32, s,mipsn32,noarch,' + ;; + mipsn32el) + SUBSTS='s,mipsn32el,mipsn32el, s,mipsn32el,noarch,' + ;; + mips64) + SUBSTS='s,mips64,mips64, s,mips64,noarch,' + ;; + mips64el) + SUBSTS='s,mips64el,mips64el, s,mips64el,noarch,' + ;; + s390x) + SUBSTS='s,s390x,s390x, s,s390x,noarch,' + ;; sparc*) SUBSTS='s,sparc\(64\|v9\),sparc, s,sparc64,sparcv9,;s,sparc\([^v]\|$\),sparcv9\1, s,sparcv9,sparc64,;s,sparc\([^6]\|$\),sparc64\1,' ;; powerpc*|ppc*) SUBSTS='s,ppc64,ppc, s,ppc\([^6]\|$\),ppc64\1,' ;; + riscv64) + SUBSTS='s,riscv64,riscv64, s,riscv64,noarch,' + ;; x86_64) SUBSTS='s,x86_64,x86_64, s,x86_64,noarch,' ;; @@ -79,6 +103,12 @@ for SUBST in $SUBSTS ; do ARCH_INSTALL_POST='%{nil}' case "${ARCH}-${OS}" in aarch64-linux) LIBSUFF=64 ;; + mipsn32-linux*) LIBSUFF=32 ;; + mipsn32el-linux*) LIBSUFF=32 ;; + mips64-linux*) LIBSUFF=64 ;; + mips64el-linux*) LIBSUFF=64 ;; + riscv64-linux) LIBSUFF=64 ;; + s390x-linux) LIBSUFF=64 ;; sparc64-linux) LIBSUFF=64 ;; x86_64-linux) LIBSUFF=64 ;; e2k*-linux) LIBSUFF=64 ;; diff --git a/macros.in b/macros.in index 12f15c5..3d4cb58 100644 --- a/macros.in +++ b/macros.in @@ -812,6 +812,30 @@ %_configure_platform_e2k16c e2k-%{_vendor}-%{_target_os}%{_gnueabi} %_configure_platform_e2k2c3 e2k-%{_vendor}-%{_target_os}%{_gnueabi} +#------------------------------------------------------------------------------ +# arch macro for o32 MIPS targets +%mips32 mips mipsel + +#------------------------------------------------------------------------------ +# arch macro for n32 MIPS targets +%mipsn32 mipsn32 mipsn32el + +#------------------------------------------------------------------------------ +# arch macro for n64 MIPS targets +%mips64 mips64 mips64el + +#------------------------------------------------------------------------------ +# arch macro for big endian MIPS targets +%mipseb mips mipsn32 mips64 + +#------------------------------------------------------------------------------ +# arch macro for little endian MIPS targets +%mipsel mipsel mipsn32el mips64el + +#------------------------------------------------------------------------------ +# arch macro for all supported MIPS targets +%mips %{mips32} %{mipsn32} %{mips64} + #------------------------------------------------------------------------ # Use in %install to generate locale specific file lists. For example, # diff --git a/rpm-4_0.spec b/rpm-4_0.spec index 6f68696..c4aa9a7 100644 --- a/rpm-4_0.spec +++ b/rpm-4_0.spec @@ -305,13 +305,13 @@ chmod a+x scripts/find-lang RPMCONFIGDIR=./scripts ./scripts/find-lang %oname rpm2cpio --output %oname.lang pushd %buildroot%_rpmlibdir - for f in *-alt-%_target_os; do - n=`echo "$f" |sed -e 's/-alt//'` + for f in *-alt-%_target_os%{?_gnueabi:%_gnueabi}; do + n=`echo "$f" |sed -e 's/-alt//' %{?_gnueabi:-e 's/%_gnueabi$//'}` [ -e "$n" ] || ln -s "$f" "$n" done popd -/bin/ls -1d %buildroot%_rpmlibdir/*-%_target_os | +ls -d %buildroot%_rpmlibdir/*-%{_target_os}* | grep -Fv /brp- | sed -e "s|^%buildroot|%%attr(-,root,%oname) |g" >>rpmbuild.platform diff --git a/rpmrc.in b/rpmrc.in index b87677b..f09ba45 100644 --- a/rpmrc.in +++ b/rpmrc.in @@ -71,6 +71,10 @@ optflags: hppa2.0 %optflags_default -mpa-risc-1-0 optflags: mips %optflags_default optflags: mipsel %optflags_default +optflags: mipsn32 %optflags_default +optflags: mipsn32el %optflags_default +optflags: mips64 %optflags_default +optflags: mips64el %optflags_default optflags: armv3l %optflags_default -fomit-frame-pointer -march=armv3 optflags: armv4l %optflags_default -fomit-frame-pointer -march=armv4 @@ -82,6 +86,7 @@ optflags: arm %optflags_default -fomit-frame-pointer -march=armv5te optflags: armv7l %optflags_default -fomit-frame-pointer -march=armv7-a -mthumb optflags: armh %optflags_default -fomit-frame-pointer -march=armv7-a -mthumb optflags: aarch64 %optflags_default +optflags: riscv64 %optflags_default optflags: atarist %optflags_default -fomit-frame-pointer optflags: atariste %optflags_default -fomit-frame-pointer @@ -139,7 +144,12 @@ arch_canon: ia64: ia64 9 arch_canon: sparc64:sparc64 10 arch_canon: sun4u: sparc64 10 + arch_canon: mipsel: mipsel 11 +arch_canon: mipsn32: mipsn32 11 +arch_canon: mipsn32el: mipsn32el 11 +arch_canon: mips64: mips64 11 +arch_canon: mips64el: mips64el 11 arch_canon: armv6l: arm 12 arch_canon: armv5tejl: armv5tejl 12 @@ -327,6 +337,10 @@ arch_compat: sparc: noarch arch_compat: mips: noarch arch_compat: mipsel: noarch +arch_compat: mipsn32: noarch +arch_compat: mipsn32el: noarch +arch_compat: mips64: noarch +arch_compat: mips64el: noarch arch_compat: hppa2.0: hppa1.2 arch_compat: hppa1.2: hppa1.1 @@ -366,6 +380,8 @@ arch_compat: amd64: x86_64 arch_compat: ia32e: x86_64 arch_compat: x86_64: athlon_xp pentium4 +arch_compat: riscv64: noarch + os_compat: IRIX64: IRIX os_compat: solaris2.7: solaris2.3 solaris2.4 solaris2.5 solaris2.6 os_compat: solaris2.6: solaris2.3 solaris2.4 solaris2.5 @@ -448,6 +464,10 @@ buildarch_compat: ppc64: noarch buildarch_compat: mips: noarch buildarch_compat: mipsel: noarch +buildarch_compat: mipsn32: noarch +buildarch_compat: mipsn32el: noarch +buildarch_compat: mips64: noarch +buildarch_compat: mips64el: noarch buildarch_compat: armv8l: armv7l buildarch_compat: armv7l: armh @@ -483,6 +503,8 @@ buildarch_compat: ia64: noarch buildarch_compat: s390: noarch buildarch_compat: s390x: noarch +buildarch_compat: riscv64: noarch + macrofiles: @RPMCONFIGDIR@/buildmacros:@RPMCONFIGDIR@/%{_target}/macros:@RPMCONFIGDIR@/macros.d/*:@SYSCONFIGDIR@/macros.specspo:@SYSCONFIGDIR@/macros.cdb:@SYSCONFIGDIR@/macros:@SYSCONFIGDIR@/%{_target}/macros:@SYSCONFIGDIR@/macros.d/*:~/.rpmmacros # \endverbatim