Ver Fonte

HADOOP-8538. CMake builds fail on ARM. Contributed by Trevor Robinson

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1356041 13f79535-47bb-0310-9956-ffa450edef68
Eli Collins há 13 anos atrás
pai
commit
dcc1d3b7f0

+ 2 - 0
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -286,6 +286,8 @@ Branch-2 ( Unreleased changes )
     HADOOP-8438. hadoop-validate-setup.sh refers to examples jar file which doesn't exist
     (Devaraj K via umamahesh)
 
+    HADOOP-8538. CMake builds fail on ARM. (Trevor Robinson via eli)
+
   BREAKDOWN OF HDFS-3042 SUBTASKS
 
     HADOOP-8220. ZKFailoverController doesn't handle failure to become active

+ 5 - 2
hadoop-common-project/hadoop-common/src/CMakeLists.txt

@@ -24,8 +24,11 @@ set(CMAKE_BUILD_TYPE, Release)
 # If JVM_ARCH_DATA_MODEL is 32, compile all binaries as 32-bit.
 # This variable is set by maven.
 if (JVM_ARCH_DATA_MODEL EQUAL 32)
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
-    set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -m32")
+    # force 32-bit code generation on amd64/x86_64, ppc64, sparc64
+    if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYSTEM_PROCESSOR MATCHES ".*64")
+        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
+        set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -m32")
+    endif ()
     if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64")
         set(CMAKE_SYSTEM_PROCESSOR "i686")
     endif ()

+ 5 - 2
hadoop-hdfs-project/hadoop-hdfs/src/CMakeLists.txt

@@ -24,8 +24,11 @@ set(CMAKE_BUILD_TYPE, Release)
 # If JVM_ARCH_DATA_MODEL is 32, compile all binaries as 32-bit.
 # This variable is set by maven.
 if (JVM_ARCH_DATA_MODEL EQUAL 32)
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
-    set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -m32")
+    # force 32-bit code generation on amd64/x86_64, ppc64, sparc64
+    if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYSTEM_PROCESSOR MATCHES ".*64")
+        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
+        set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -m32")
+    endif ()
     if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64")
         set(CMAKE_SYSTEM_PROCESSOR "i686")
     endif ()

+ 5 - 2
hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/CMakeLists.txt

@@ -19,8 +19,11 @@ cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
 set(CMAKE_BUILD_TYPE, Release)
 
 if (JVM_ARCH_DATA_MODEL EQUAL 32)
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
-    set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -m32")
+    # force 32-bit code generation on amd64/x86_64, ppc64, sparc64
+    if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYSTEM_PROCESSOR MATCHES ".*64")
+        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
+        set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -m32")
+    endif ()
     if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64")
         set(CMAKE_SYSTEM_PROCESSOR "i686")
     endif ()

+ 6 - 3
hadoop-tools/hadoop-pipes/src/CMakeLists.txt

@@ -27,9 +27,12 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_REENTRANT -D_FILE_OFFSET_BITS=64")
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_REENTRANT -D_FILE_OFFSET_BITS=64")
 
 if (JVM_ARCH_DATA_MODEL EQUAL 32)
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
-    set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -m32")
+    # force 32-bit code generation on amd64/x86_64, ppc64, sparc64
+    if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYSTEM_PROCESSOR MATCHES ".*64")
+        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
+        set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -m32")
+    endif ()
     if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64")
         set(CMAKE_SYSTEM_PROCESSOR "i686")
     endif ()