From 8ea0766773d255f3a3601536e06edf6891c1b731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20A=2E=20Col=C3=B3n=20V=C3=A9lez?= Date: Wed, 24 Dec 2014 15:39:51 -0500 Subject: [PATCH] Use TargetArch to correctly detect the target. Currently crosscompiling was broken since we detected the cpu of the host not of the target. Building arm -> i386, i386->amd64, etc resulted in interesting stuff. . CMAKE_HOST_SYSTEM_PROCESSOR and CMAKE_SYSTEM_PROCESSOR should have done this but they are incredibly broken and unreliable. I use CMAKE_HOST_SYSTEM_PROCESSOR just to retain the format of the old message and is not used for critical stuff so it does not matter. . This code also allows scalability so that if one day in the very distant and unlikely future the x86/x86_64 specific code gets made portable by replacing asm/MMX/SSE*/AVX/etc code with generic/portable code then it also would work on all architectures. . For *BSD/OS X it probably would need to use POSIX AIO instead of linux specific libaio but that is a different issue. . Error out the x86_64 builds. Also the 64BIT_BUILD_DONT_WORK option became obsolete more info in following commit. --- cmake/BuildParameters.cmake | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/cmake/BuildParameters.cmake b/cmake/BuildParameters.cmake index 3caab734af..b19975e155 100644 --- a/cmake/BuildParameters.cmake +++ b/cmake/BuildParameters.cmake @@ -70,11 +70,19 @@ option(64BIT_BUILD_DONT_WORK "Enable a x86_64 build instead of cross compiling ( option(DISABLE_ADVANCE_SIMD "Disable advance use of SIMD (SSE2+ & AVX)" OFF) # Architecture bitness detection -if(CMAKE_SIZEOF_VOID_P EQUAL 8) +include(TargetArch) +target_architecture(PCSX2_TARGET_ARCHITECTURES) +if(${PCSX2_TARGET_ARCHITECTURES} MATCHES "x86_64") set(_ARCH_64 1) -else() + if(CMAKE_BUILD_TYPE MATCHES "Release" OR PACKAGE_MODE) + message(FATAL_ERROR "The ${PCSX2_TARGET_ARCHITECTURES} architecture is not ready yet.") + endif() +elseif(${PCSX2_TARGET_ARCHITECTURES} MATCHES "i386") set(_ARCH_32 1) +else() + message(FATAL_ERROR "Unsupported architecture: ${PCSX2_TARGET_ARCHITECTURES}") endif() +message(STATUS "Compiling a ${PCSX2_TARGET_ARCHITECTURES} build on a ${CMAKE_HOST_SYSTEM_PROCESSOR} host.") # Print a clear message that 64bits is not supported if(_ARCH_64) @@ -87,7 +95,6 @@ endif() # 64 bits cross-compile specific configuration if(_ARCH_64 AND 64BIT_BUILD_DONT_WORK) - message("Compiling 64bit build on 64bit architecture") # Search library in /usr/lib64 SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS ON) # Probably useless but it will not harm @@ -114,7 +121,6 @@ if(_ARCH_64 AND 64BIT_BUILD_DONT_WORK) set(_M_X86 1) set(_M_X86_64 1) else() - message("Compiling 32bit build on 32/64bit architecture") # Do not search library in /usr/lib64 SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS OFF) # Probably useless but it will not harm