Fix target misdetection on OS X with '-arch i386'
This tested OK on Linux OS X, Solaris and Windows. It may break things under IBM XL C/C++. We will cross that bridge when we get to it.pull/548/head
parent
8734cfaa07
commit
a5bf962681
20
GNUmakefile
20
GNUmakefile
|
|
@ -30,16 +30,16 @@ else
|
||||||
GREP ?= grep
|
GREP ?= grep
|
||||||
endif
|
endif
|
||||||
|
|
||||||
IS_X86 := $(shell uname -m | $(GREP) -v "64" | $(GREP) -i -c -E "i.86|x86|i86")
|
IS_X86 := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -v "64" | $(GREP) -i -c -E "i.86|x86|i86")
|
||||||
IS_X64 := $(shell uname -m | $(GREP) -i -c -E "(_64|d64)")
|
IS_X64 := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -i -c -E "(_64|d64)")
|
||||||
IS_PPC32 := $(shell uname -m | $(GREP) -i -v "64" | $(GREP) -i -c -E "ppc|power")
|
IS_PPC32 := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -i -v "64" | $(GREP) -i -c -E "ppc|power")
|
||||||
IS_PPC64 := $(shell uname -m | $(GREP) -i -c -E "ppc64|power64")
|
IS_PPC64 := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -i -c -E "ppc64|power64")
|
||||||
IS_ARM32 := $(shell uname -m | $(GREP) -i -v "64" | $(GREP) -i -c -E 'armhf|arm7l|eabihf')
|
IS_ARM32 := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -i -v "64" | $(GREP) -i -c -E 'armhf|arm7l|eabihf')
|
||||||
IS_ARM64 := $(shell uname -m | $(GREP) -i -c 'aarch64')
|
IS_ARM64 := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -i -c 'aarch64')
|
||||||
IS_ARMV8 ?= $(shell uname -m | $(GREP) -i -c -E 'aarch32|aarch64')
|
IS_ARMV8 ?= $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -i -c -E 'aarch32|aarch64')
|
||||||
IS_NEON ?= $(shell uname -m | $(GREP) -i -c -E 'armv7|armv8|aarch32|aarch64')
|
IS_NEON ?= $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -i -c -E 'armv7|armv8|aarch32|aarch64')
|
||||||
IS_SPARC := $(shell uname -m | $(GREP) -i -c "sparc")
|
IS_SPARC := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -i -c "sparc")
|
||||||
IS_SPARC64 := $(shell uname -m | $(GREP) -i -c "sparc64")
|
IS_SPARC64 := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -i -c "sparc64")
|
||||||
|
|
||||||
IS_AIX := $(shell uname -s | $(GREP) -i -c 'aix')
|
IS_AIX := $(shell uname -s | $(GREP) -i -c 'aix')
|
||||||
IS_SUN := $(shell uname -s | $(GREP) -i -c "SunOS")
|
IS_SUN := $(shell uname -s | $(GREP) -i -c "SunOS")
|
||||||
|
|
|
||||||
26
cpu.cpp
26
cpu.cpp
|
|
@ -54,6 +54,15 @@ NAMESPACE_BEGIN(CryptoPP)
|
||||||
extern "C" {
|
extern "C" {
|
||||||
typedef void (*SigHandler)(int);
|
typedef void (*SigHandler)(int);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
static jmp_buf s_jmpNoCPUID;
|
||||||
|
static void SigIllHandlerCPUID(int)
|
||||||
|
{
|
||||||
|
longjmp(s_jmpNoCPUID, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif // Not CRYPTOPP_MS_STYLE_INLINE_ASSEMBLY
|
#endif // Not CRYPTOPP_MS_STYLE_INLINE_ASSEMBLY
|
||||||
|
|
||||||
// *************************** IA-32 CPUs ***************************
|
// *************************** IA-32 CPUs ***************************
|
||||||
|
|
@ -83,17 +92,6 @@ inline bool CpuId(word32 func, word32 subfunc, word32 output[4])
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#ifndef CRYPTOPP_MS_STYLE_INLINE_ASSEMBLY
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
static jmp_buf s_jmpNoCPUID;
|
|
||||||
static void SigIllHandlerCPUID(int)
|
|
||||||
{
|
|
||||||
longjmp(s_jmpNoCPUID, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Borland/Embarcadero and Issue 498
|
// Borland/Embarcadero and Issue 498
|
||||||
// cpu.cpp (131): E2211 Inline assembly not allowed in inline and template functions
|
// cpu.cpp (131): E2211 Inline assembly not allowed in inline and template functions
|
||||||
bool CpuId(word32 func, word32 subfunc, word32 output[4])
|
bool CpuId(word32 func, word32 subfunc, word32 output[4])
|
||||||
|
|
@ -297,7 +295,7 @@ void DetectX86Features()
|
||||||
if (!g_cacheLineSize)
|
if (!g_cacheLineSize)
|
||||||
g_cacheLineSize = CRYPTOPP_L1_CACHE_LINE_SIZE;
|
g_cacheLineSize = CRYPTOPP_L1_CACHE_LINE_SIZE;
|
||||||
|
|
||||||
g_x86DetectionDone = true;
|
*const_cast<volatile bool*>(&g_x86DetectionDone) = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// *************************** ARM-32, Aarch32 and Aarch64 ***************************
|
// *************************** ARM-32, Aarch32 and Aarch64 ***************************
|
||||||
|
|
@ -561,7 +559,7 @@ void DetectArmFeatures()
|
||||||
if (!g_cacheLineSize)
|
if (!g_cacheLineSize)
|
||||||
g_cacheLineSize = CRYPTOPP_L1_CACHE_LINE_SIZE;
|
g_cacheLineSize = CRYPTOPP_L1_CACHE_LINE_SIZE;
|
||||||
|
|
||||||
g_ArmDetectionDone = true;
|
*const_cast<volatile bool*>(&g_ArmDetectionDone) = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// *************************** PowerPC and PowerPC64 ***************************
|
// *************************** PowerPC and PowerPC64 ***************************
|
||||||
|
|
@ -683,7 +681,7 @@ void DetectPowerpcFeatures()
|
||||||
if (g_cacheLineSize <= 0)
|
if (g_cacheLineSize <= 0)
|
||||||
g_cacheLineSize = CRYPTOPP_L1_CACHE_LINE_SIZE;
|
g_cacheLineSize = CRYPTOPP_L1_CACHE_LINE_SIZE;
|
||||||
|
|
||||||
g_PowerpcDetectionDone = true;
|
*const_cast<volatile bool*>(&g_PowerpcDetectionDone) = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,9 @@ extern "C"
|
||||||
|
|
||||||
bool CPU_ProbeSSE2()
|
bool CPU_ProbeSSE2()
|
||||||
{
|
{
|
||||||
#if CRYPTOPP_BOOL_X64
|
// Apple switched to Intel desktops in 2005/2006 using
|
||||||
|
// Core2 Duo's, which provides SSE2 and above.
|
||||||
|
#if CRYPTOPP_BOOL_X64 || defined(__APPLE__)
|
||||||
return true;
|
return true;
|
||||||
#elif defined(CRYPTOPP_NO_CPU_FEATURE_PROBES)
|
#elif defined(CRYPTOPP_NO_CPU_FEATURE_PROBES)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue