native armv7 build support
authorA. Maitland Bottoms <bottoms@debian.org>
Sun, 27 Aug 2017 17:44:55 +0000 (18:44 +0100)
committerA. Maitland Bottoms <bottoms@debian.org>
Sun, 27 Aug 2017 17:44:55 +0000 (18:44 +0100)
Debian, unlike other GNU Radio deployments, does not cross-compile
packages, but builds natively on a set of build machines, including
both arm and armhf.

Gbp-Pq: Name native-armv7-build-support

lib/CMakeLists.txt

index ad5653ceb028996a3447d3f61d70323a8cc28699..5a5e62d9734ec34075467a1103c9057c06b1a18a 100644 (file)
@@ -249,6 +249,13 @@ if(NOT CPU_IS_x86)
     OVERRULE_ARCH(avx "Architecture is not x86 or x86_64")
 endif(NOT CPU_IS_x86)
 
+########################################################################
+# if building Debian armel, eliminate neon
+########################################################################
+if(${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabi")
+    OVERRULE_ARCH(neon "Architecture is not armhf")
+endif(${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabi")
+
 ########################################################################
 # implement overruling in the ORC case,
 # since ORC always passes flag detection
@@ -414,7 +421,7 @@ include_directories(
 # Handle ASM support
 #  on by default, but let users turn it off
 ########################################################################
-if(${CMAKE_VERSION} VERSION_GREATER "2.8.9")
+if((${CMAKE_VERSION} VERSION_GREATER "2.8.9") AND NOT (${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabi"))
   set(ASM_ARCHS_AVAILABLE "neon")
 
   set(FULL_C_FLAGS "${CMAKE_C_FLAGS}" "${CMAKE_CXX_COMPILER_ARG1}")
@@ -424,7 +431,7 @@ if(${CMAKE_VERSION} VERSION_GREATER "2.8.9")
   # set up the assembler flags and include the source files
   foreach(ARCH ${ASM_ARCHS_AVAILABLE})
       string(REGEX MATCH "${ARCH}" ASM_ARCH "${available_archs}")
-    if( ASM_ARCH STREQUAL "neon" )
+    if(( ASM_ARCH STREQUAL "neon" ) OR ( ${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7"))
       message(STATUS "---- Adding ASM files") # we always use ATT syntax
       message(STATUS "-- Detected neon architecture; enabling ASM")
       # setup architecture specific assembler flags
@@ -443,7 +450,7 @@ if(${CMAKE_VERSION} VERSION_GREATER "2.8.9")
     message(STATUS "asm flags: ${CMAKE_ASM_FLAGS}")
   endforeach(ARCH)
 
-else(${CMAKE_VERSION} VERSION_GREATER "2.8.9")
+else((${CMAKE_VERSION} VERSION_GREATER "2.8.9") AND NOT (${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabi"))
   message(STATUS "Not enabling ASM support. CMake >= 2.8.10 required.")
   foreach(machine_name ${available_machines})
     string(REGEX MATCH "neon" NEON_MACHINE ${machine_name})
@@ -451,7 +458,7 @@ else(${CMAKE_VERSION} VERSION_GREATER "2.8.9")
       message(FATAL_ERROR "CMake >= 2.8.10 is required for ARM NEON support")
     endif()
   endforeach()
-endif(${CMAKE_VERSION} VERSION_GREATER "2.8.9")
+endif((${CMAKE_VERSION} VERSION_GREATER "2.8.9") AND NOT (${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabi"))
 
 ########################################################################
 # Handle orc support