summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicky <nicky.dasmijn@gmail.com>2022-05-07 17:23:20 +0200
committerNicky <nicky.dasmijn@gmail.com>2022-05-07 17:23:20 +0200
commit07a7c4e1909749ca2f50d155c0de3fdfdbb34952 (patch)
treef7b2426f85b06438716bd572a37e485e09fbfd02
parentd6c170a66de1fe6cf6287ca970b79d0ae6e98149 (diff)
ADDRESS_SIZE auto detection was broken with python3, fix this.
- Simplify detection by using regex - OSX is always 64 bit
-rw-r--r--indra/cmake/Variables.cmake41
1 files changed, 21 insertions, 20 deletions
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 3098b9aa59..4f40516917 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -79,27 +79,28 @@ elseif (ADDRESS_SIZE EQUAL 64)
#message(STATUS "ADDRESS_SIZE is 64")
set(ARCH x86_64)
else (ADDRESS_SIZE EQUAL 32)
- #message(STATUS "ADDRESS_SIZE is UNRECOGNIZED: '${ADDRESS_SIZE}'")
- # Use Python's platform.machine() since uname -m isn't available everywhere.
- # Even if you can assume cygwin uname -m, the answer depends on whether
- # you're running 32-bit cygwin or 64-bit cygwin! But even 32-bit Python will
- # report a 64-bit processor.
- execute_process(COMMAND
- "${PYTHON_EXECUTABLE}" "-c"
- "import platform; print platform.machine()"
- OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
- # We expect values of the form i386, i686, x86_64, AMD64.
- # In CMake, expressing ARCH.endswith('64') is awkward:
- string(LENGTH "${ARCH}" ARCH_LENGTH)
- math(EXPR ARCH_LEN_2 "${ARCH_LENGTH} - 2")
- string(SUBSTRING "${ARCH}" ${ARCH_LEN_2} 2 ARCH_LAST_2)
- if (ARCH_LAST_2 STREQUAL 64)
- #message(STATUS "ARCH is detected as 64; ARCH is ${ARCH}")
+ # Note we cannnot use if(DARWIN) here, this variable is set way lower
+ if( ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
set(ADDRESS_SIZE 64)
- else ()
- #message(STATUS "ARCH is detected as 32; ARCH is ${ARCH}")
- set(ADDRESS_SIZE 32)
- endif ()
+ set(ARCH x86_64)
+ else()
+ # Use Python's platform.machine() since uname -m isn't available everywhere.
+ # Even if you can assume cygwin uname -m, the answer depends on whether
+ # you're running 32-bit cygwin or 64-bit cygwin! But even 32-bit Python will
+ # report a 64-bit processor.
+ execute_process(COMMAND
+ "${PYTHON_EXECUTABLE}" "-c"
+ "import platform; print( platform.machine() )"
+ OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string( REGEX MATCH ".*(64)$" RE_MATCH "${ARCH}" )
+ if( RE_MATCH AND ${CMAKE_MATCH_1} STREQUAL "64" )
+ set(ADDRESS_SIZE 64)
+ set(ARCH x86_64)
+ else()
+ set(ADDRESS_SIZE 32)
+ set(ARCH i686)
+ endif()
+ endif()
endif (ADDRESS_SIZE EQUAL 32)
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")