Do not compute platform, this does not work in cross compile environment
since it pokes at the system for getting architecture values

Upstream-Status: Inappropriate
Signed-off-by: Khem Raj <raj.khem@gmail.com>

--- a/setup.py
+++ b/setup.py
@@ -169,24 +169,6 @@ class _M2CryptoBuildExt(build_ext.build_
             log.debug('self.include_dirs = %s', self.include_dirs)
             log.debug('self.library_dirs = %s', self.library_dirs)
 
-        if platform.system() == "Linux":
-            # For RedHat-based distros, the '-D__{arch}__' option for
-            # Swig needs to be normalized, particularly on i386.
-            mach = platform.machine().lower()
-            if mach in ('i386', 'i486', 'i586', 'i686'):
-                arch = '__i386__'
-            elif mach in ('ppc64', 'powerpc64', 'ppc64le', 'ppc64el'):
-                arch = '__powerpc64__'
-            elif mach in ('ppc', 'powerpc'):
-                arch = '__powerpc__'
-            else:
-                arch = '__%s__' % mach
-            self.swig_opts.append('-D%s' % arch)
-            if mach in ('ppc64le', 'ppc64el'):
-                self.swig_opts.append('-D_CALL_ELF=2')
-            if mach in ('arm64_be'):
-                self.swig_opts.append('-D__AARCH64EB__')
-
         self.swig_opts.extend(['-I%s' % i for i in self.include_dirs])
 
         # Some Linux distributor has added the following line in
