deal with TODO related to sh4a architecture detection, do not rely on uname output as it can be wrong in chroot

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-02-24 02:52:28 +02:00
parent ce694aea2e
commit e611701095
2 changed files with 50 additions and 35 deletions

View file

@ -315,41 +315,13 @@ else()
message(FATAL_ERROR "Unknown platform '${CMAKE_SYSTEM_NAME}'")
endif()
# https://en.wikipedia.org/wiki/Uname
if(KATIE_PROCESSOR MATCHES "^alpha")
set(KATIE_ARCH "ALPHA")
elseif(KATIE_PROCESSOR MATCHES "^arm64")
set(KATIE_ARCH "ARM64")
elseif(KATIE_PROCESSOR MATCHES "^arm")
set(KATIE_ARCH "ARM")
elseif(KATIE_PROCESSOR MATCHES "^avr")
set(KATIE_ARCH "AVR32")
elseif(KATIE_PROCESSOR MATCHES "^blackfin")
set(KATIE_ARCH "BFIN")
elseif(KATIE_PROCESSOR MATCHES "^ia64")
set(KATIE_ARCH "IA64")
elseif(KATIE_PROCESSOR MATCHES "^m68k")
set(KATIE_ARCH "M68K")
elseif(KATIE_PROCESSOR MATCHES "^mips")
set(KATIE_ARCH "MIPS")
elseif(KATIE_PROCESSOR MATCHES "^hppa")
set(KATIE_ARCH "PARISC")
elseif(KATIE_PROCESSOR MATCHES "^ppc64")
set(KATIE_ARCH "POWERPC64")
elseif(KATIE_PROCESSOR MATCHES "^ppc")
set(KATIE_ARCH "POWERPC")
elseif(KATIE_PROCESSOR MATCHES "^s390")
set(KATIE_ARCH "S390")
elseif(KATIE_PROCESSOR MATCHES "^sparc")
set(KATIE_ARCH "SPARC")
elseif(KATIE_PROCESSOR MATCHES "^sh")
# TODO: SH4A
set(KATIE_ARCH "SH")
elseif(KATIE_PROCESSOR MATCHES "(x86_64|amd64)")
set(KATIE_ARCH "X86_64")
elseif(KATIE_PROCESSOR MATCHES "(x86|i[3-6]86|i86pc)")
set(KATIE_ARCH "I386")
else()
try_run(
KATIE_ARCH_RUN_RESULT KATIE_ARCH_COMPILE_RESULT
"${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}/cmake/arch.cpp"
RUN_OUTPUT_VARIABLE KATIE_ARCH
)
if(NOT KATIE_ARCH_RUN_RESULT EQUAL 0 OR NOT KATIE_ARCH_COMPILE_RESULT)
message(FATAL_ERROR "Unknown CPU '${KATIE_PROCESSOR}'")
endif()

43
cmake/arch.cpp Normal file
View file

@ -0,0 +1,43 @@
#include <stdio.h>
int main() {
#if defined(__alpha__)
printf("ALPHA");
#elif defined(__arm__)
printf("ARM");
#elif defined(__aarch64__)
printf("ARM64");
#elif defined(__avr__)
printf("AVR32");
#elif defined(__bfin__)
printf("BFIN");
#elif defined(__i386__)
printf("I386");
#elif defined(__ia64__)
printf("IA64");
#elif defined(__m68k__)
printf("M68K");
#elif defined(__mips__)
printf("MIPS");
#elif defined(__hppa__)
printf("PARISC");
#elif defined(__powerpc__)
printf("POWERPC");
#elif defined(__powerpc64__)
printf("POWERPC64");
#elif defined(__s390__)
printf("S390");
#elif defined(__sparc__)
printf("SPARC");
#elif defined(__sh__)
printf("SH");
#elif defined(__sh4a__)
printf("SH4A");
#elif defined(__x86_64__)
printf("X86_64");
#else
printf("Unable to detect architecture, please update above list\n");
return 1;
#endif
return 0;
}