[hamradio-commits] [gnss-sdr] 51/60: Cross-compilation fixes

Carles Fernandez carles_fernandez-guest at moszumanska.debian.org
Sun Mar 22 11:15:44 UTC 2015


This is an automated email from the git hooks/post-receive script.

carles_fernandez-guest pushed a commit to branch next
in repository gnss-sdr.

commit 06d58bcce1256b20d0a3d4bd626f965ce404bfee
Author: Anthony Arnold <anthony.arnold at uqconnect.edu.au>
Date:   Sat Mar 21 00:23:16 2015 +1000

    Cross-compilation fixes
---
 CMakeLists.txt                                          | 12 +++++++-----
 cmake/Modules/TestForARM.cmake                          |  2 +-
 cmake/Modules/TestForSSE.cmake                          |  2 +-
 .../volk_gnsssdr_module/volk_gnsssdr/CMakeLists.txt     |  1 +
 .../volk_gnsssdr/lib/volk_gnsssdr_malloc.c              | 17 +++++++++++++----
 5 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 506176d..b1e523d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,7 +21,7 @@
 # Project setup
 ########################################################################
 if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
-    message(FATAL_ERROR "Prevented in-tree build. This is bad practice. Try 'cd build && cmake ../' ")
+    message(WARNING "In-tree build is bad practice. Try 'cd build && cmake ../' ")
 endif(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
 cmake_minimum_required(VERSION 2.8)
 project(gnss-sdr CXX C)
@@ -398,11 +398,15 @@ if(OS_IS_MACOSX)
     endif(CMAKE_GENERATOR STREQUAL Xcode)
 endif(OS_IS_MACOSX)
 if(NOT VOLK_GNSSSDR_FOUND)
+    set(VOLK_GNSSSDR_CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/install -DENABLE_STATIC_LIBS=ON ${STRIP_VOLK_GNSSSDR_PROFILE} ${USE_MACPORTS_PYTHON})
+    if(CMAKE_TOOLCHAIN_FILE)
+      set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE ${CMAKE_TOOLCHAIN_FILE})
+    endif(CMAKE_TOOLCHAIN_FILE)
     ExternalProject_Add(volk_gnsssdr_module
          PREFIX ${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module
          SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr
          BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/build   
-         CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/install -DENABLE_STATIC_LIBS=ON ${STRIP_VOLK_GNSSSDR_PROFILE} ${USE_MACPORTS_PYTHON}
+         CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS}
          DOWNLOAD_COMMAND ""
          UPDATE_COMMAND ""
          PATCH_COMMAND ""
@@ -724,7 +728,7 @@ if(OS_IS_LINUX)
         else(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
             message(" sudo apt-get install gfortran") 
         endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
-        message(FATAL_ERROR "gfortran is required to build gnss-sdr")
+        #message(FATAL_ERROR "gfortran is required to build gnss-sdr")
     endif(NOT GFORTRAN)
 endif(OS_IS_LINUX)
 
@@ -1080,5 +1084,3 @@ add_subdirectory(src)
 if(ENABLE_PACKAGING)
     include(GnssSdrPackaging)
 endif(ENABLE_PACKAGING)
-
-
diff --git a/cmake/Modules/TestForARM.cmake b/cmake/Modules/TestForARM.cmake
index dd9d512..1217fb4 100644
--- a/cmake/Modules/TestForARM.cmake
+++ b/cmake/Modules/TestForARM.cmake
@@ -26,7 +26,7 @@ set (ARM_VERSION "")
 
 if (CMAKE_COMPILER_IS_GNUCXX)
   execute_process(COMMAND echo "int main(){}"
-                  COMMAND ${CMAKE_CXX_COMPILER} -dM -E -
+                  COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -dM -E -
 		  OUTPUT_VARIABLE TEST_FOR_ARM_RESULTS)
 
   string(REGEX MATCH "__arm" ARM_FOUND "${TEST_FOR_ARM_RESULTS}")
diff --git a/cmake/Modules/TestForSSE.cmake b/cmake/Modules/TestForSSE.cmake
index 8dfe1cf..1280f83 100644
--- a/cmake/Modules/TestForSSE.cmake
+++ b/cmake/Modules/TestForSSE.cmake
@@ -8,7 +8,7 @@
 function (test_for_sse h_file result_var name)
   if (NOT DEFINED ${result_var})
     execute_process(COMMAND echo "#include <${h_file}>"
-                    COMMAND ${CMAKE_CXX_COMPILER} -c -x c++ -
+                    COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -c -x c++ -
 		    RESULT_VARIABLE COMPILE_RESULT
 		    OUTPUT_QUIET ERROR_QUIET)
     set(detected 0)
diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/CMakeLists.txt b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/CMakeLists.txt
index f629316..b1218fc 100644
--- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/CMakeLists.txt
+++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/CMakeLists.txt
@@ -38,6 +38,7 @@ set(CMAKE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) #allows this to be a sub-proje
 set(CMAKE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) #allows this to be a sub-project
 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) #location for custom "Modules"
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
 
 ########################################################################
 # Environment setup
diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/volk_gnsssdr_malloc.c b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/volk_gnsssdr_malloc.c
index 3cb93b7..602bc0e 100644
--- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/volk_gnsssdr_malloc.c
+++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/volk_gnsssdr_malloc.c
@@ -20,8 +20,7 @@
 #include "volk_gnsssdr/volk_gnsssdr_malloc.h"
 #include <pthread.h>
 #include <stdio.h>
-
-
+#include <string.h>
 
 /*
  * For #defines used to determine support for allocation functions,
@@ -52,12 +51,20 @@
 //#else // _ISOC11_SOURCE
 
 // Otherwise, test if we are a POSIX or X/Open system
-// This only has a restriction that alignment be a power of 2.
+// This only has a restriction that alignment be a power of 2and a
+// multiple of sizeof(void *).
 #if _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || HAVE_POSIX_MEMALIGN
 
 void *volk_gnsssdr_malloc(size_t size, size_t alignment)
 {
     void *ptr;
+
+  // quoting posix_memalign() man page:
+  // "alignment must be a power of two and a multiple of sizeof(void *)"
+  // volk_get_alignment() could return 1 for some machines (e.g. generic_orc)
+  if (alignment == 1)
+    return malloc(size);
+
     int err = posix_memalign(&ptr, alignment, size);
     if(err == 0)
         {
@@ -65,7 +72,9 @@ void *volk_gnsssdr_malloc(size_t size, size_t alignment)
         }
     else
         {
-            fprintf(stderr, "VOLK: Error allocating memory (posix_memalign: %d)\n", err);
+            fprintf(stderr,
+                    "VOLK: Error allocating memory "
+                    "(posix_memalign: error %d: %s)\n", err, strerror(err));
             return NULL;
         }
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git



More information about the pkg-hamradio-commits mailing list