diff -urN rpm-4.3.org/build/parseSpec.c rpm-4.3/build/parseSpec.c --- rpm-4.3.org/build/parseSpec.c 2003-11-16 11:30:21.000000000 +0100 +++ rpm-4.3/build/parseSpec.c 2003-11-16 13:53:07.000000000 +0100 @@ -194,6 +194,16 @@ } /*@=boundswrite@*/ +static const char *getAlternateArch(const char *arch) +{ + const char *alternate_arch = NULL; + if (! strncmp("x86_64", arch, sizeof("x86_64")-1)) + alternate_arch = "amd64"; + else if (! strncmp("amd64", arch, sizeof("amd64")-1)) + alternate_arch = "x86_64"; + return alternate_arch; +} + /*@-boundswrite@*/ int readLine(Spec spec, int strip) { @@ -282,13 +292,15 @@ match = 0; } else if (! strncmp("%ifarch", s, sizeof("%ifarch")-1)) { const char *arch = rpmExpand("%{_target_cpu}", NULL); + const char *alternate_arch = getAlternateArch(arch); s += 7; - match = matchTok(arch, s); + match = matchTok(arch, s) || (alternate_arch && matchTok(alternate_arch, s)); arch = _free(arch); } else if (! strncmp("%ifnarch", s, sizeof("%ifnarch")-1)) { const char *arch = rpmExpand("%{_target_cpu}", NULL); + const char *alternate_arch = getAlternateArch(arch); s += 8; - match = !matchTok(arch, s); + match = !matchTok(arch, s) && (!alternate_arch || !matchTok(alternate_arch, s)); arch = _free(arch); } else if (! strncmp("%ifos", s, sizeof("%ifos")-1)) { const char *os = rpmExpand("%{_target_os}", NULL); diff -urN rpm-4.3.org/installplatform rpm-4.3/installplatform --- rpm-4.3.org/installplatform 2003-01-10 17:18:55.000000000 +0100 +++ rpm-4.3/installplatform 2003-11-16 13:59:30.000000000 +0100 @@ -34,6 +34,7 @@ alpha*) SUBSTS='s_alpha_alpha_ s_alpha_alphaev5_ s_alpha_alphaev56_ s_alpha_alphapca56_ s_alpha_alphaev6_ s_alpha_alphaev67_' ;; 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_' ;; + x86_64*|amd64*) SUBSTS="s/${arch}/x86_64/ s/${arch}/amd64/" ;; s390*) SUBSTS='s_s390x_s390_ s_s390\([^x]\|$\)_s390x\1_' ;; *) SUBSTS=y___ ;; esac @@ -66,7 +67,7 @@ ppc-linux) MULTILIBNO=1 ;; ppc64-linux) LIB=lib64; MULTILIBNO=2 ;; i?86-linux|athlon-linux) MULTILIBNO=1 ;; - x86_64-linux) LIB=lib64; MULTILIBNO=2 ;; + x86_64-linux|amd64-linux) LIB=lib64; MULTILIBNO=2 ;; esac if [ -n "$MULTILIBNO" ]; then diff -urN rpm-4.3.org/lib/rpmrc.c rpm-4.3/lib/rpmrc.c --- rpm-4.3.org/lib/rpmrc.c 2003-11-16 11:30:21.000000000 +0100 +++ rpm-4.3/lib/rpmrc.c 2003-11-16 13:50:56.000000000 +0100 @@ -1278,6 +1278,13 @@ } # endif +# if defined(__linux__) && defined(__amd64__) + { + /* Defaults to amd64 if compiler supports __amd64__ */ + strcpy(un.machine, "amd64"); + } +# endif + # if defined(__linux__) && defined(__powerpc__) { unsigned pvr = 0; diff -urN rpm-4.3.org/rpmrc.in rpm-4.3/rpmrc.in --- rpm-4.3.org/rpmrc.in 2003-11-16 11:30:21.000000000 +0100 +++ rpm-4.3/rpmrc.in 2003-11-16 13:56:25.000000000 +0100 @@ -18,7 +18,8 @@ optflags: i686 -O2 -march=i686%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_i686: %{specflags_i686}}} optflags: athlon -O2 -march=athlon%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_athlon: %{specflags_athlon}}} optflags: ia64 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia64: %{specflags_ia64}}} -optflags: x86_64 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_x86_64: %{specflags_x86_64}}} +optflags: x86_64 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_amd64: %{specflags_amd64}}} +optflags: amd64 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_amd64: %{specflags_amd64}}} optflags: alpha -O2 -mieee%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}} optflags: alphaev5 -O2 -mieee -mcpu=ev5%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphaev5: %{specflags_alphaev5}}} @@ -71,6 +72,7 @@ arch_canon: i486: i486 1 arch_canon: i386: i386 1 arch_canon: x86_64: x86_64 1 +arch_canon: amd64: amd64 1 arch_canon: alpha: alpha 2 arch_canon: alphaev5: alphaev5 2 @@ -201,7 +203,8 @@ buildarchtranslate: ia64: ia64 -buildarchtranslate: x86_64: x86_64 +buildarchtranslate: amd64: amd64 +buildarchtranslate: x86_64: amd64 ############################################################# # Architecture compatibility @@ -270,6 +273,7 @@ arch_compat: ia64: i686 noarch +arch_compat: amd64: x86_64 arch_compat: x86_64: athlon noarch os_compat: IRIX64: IRIX @@ -299,6 +303,7 @@ os_compat: BSD_OS: bsdi os_compat: bsdi4.0: bsdi +buildarch_compat: amd64: noarch buildarch_compat: ia64: noarch buildarch_compat: athlon: i686