cmake: enable settign of MRAAPLATFORMFORCE to reduce libmraa.so size
authorBrendan Le Foll <brendan.le.foll@intel.com>
Thu, 3 Dec 2015 12:20:15 +0000 (12:20 +0000)
committerBrendan Le Foll <brendan.le.foll@intel.com>
Thu, 3 Dec 2015 12:20:15 +0000 (12:20 +0000)
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
CMakeLists.txt
src/CMakeLists.txt
src/x86/x86.c

index 7e743e6..8bc536f 100644 (file)
@@ -64,6 +64,8 @@ option (INSTALLGPIOTOOL "Install gpio tool" OFF)
 option (BUILDARCH "Override architecture to build for - override" OFF)
 option (TESTS "Override the addition of tests" ON)
 
+set (MRAAPLATFORMFORCE "" CACHE STRING "ALL")
+
 if (NOT BUILDSWIG)
   set (BUILDSWIGPYTHON OFF)
   set (BUILDSWIGNODE OFF)
index 8859183..177bce5 100644 (file)
@@ -28,6 +28,30 @@ set (mraa_LIB_X86_SRCS_NOAUTO
   ${PROJECT_SOURCE_DIR}/src/x86/intel_minnow_byt_compatible.c
 )
 
+message (INFO " - Adding support for platform ${MRAAPLATFORMFORCE}")
+
+#keywords in if statements are case sensitive
+if (NOT ${MRAAPLATFORMFORCE} STREQUAL "ALL")
+  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dx${MRAAPLATFORMFORCE} -DMRAA_PLATFORM_FORCE=${MRAAPLATFORMFORCE}")
+  if (${MRAAPLATFORMFORCE} STREQUAL "MRAA_INTEL_GALILEO_GEN2")
+    set (mraa_LIB_X86_SRCS_NOAUTO ${PROJECT_SOURCE_DIR}/src/x86/x86.c ${PROJECT_SOURCE_DIR}/src/x86/intel_galileo_rev_g.c)
+  elseif (${MRAAPLATFORMFORCE} STREQUAL "MRAA_INTEL_GALILEO_GEN1")
+    set (mraa_LIB_X86_SRCS_NOAUTO ${PROJECT_SOURCE_DIR}/src/x86/x86.c ${PROJECT_SOURCE_DIR}/src/x86/intel_galileo_rev_d.c)
+  elseif (${MRAAPLATFORMFORCE} STREQUAL "MRAA_INTEL_DE3815")
+    set (mraa_LIB_X86_SRCS_NOAUTO ${PROJECT_SOURCE_DIR}/src/x86/x86.c ${PROJECT_SOURCE_DIR}/src/x86/intel_de3815.c)
+  elseif (${MRAAPLATFORMFORCE} STREQUAL "MRAA_INTEL_EDISON_FAB_C")
+    set (mraa_LIB_X86_SRCS_NOAUTO ${PROJECT_SOURCE_DIR}/src/x86/x86.c ${PROJECT_SOURCE_DIR}/src/x86/intel_edison_fab_c.c)
+  elseif (${MRAAPLATFORMFORCE} STREQUAL "MRAA_INTEL_MINNOWBOARD_MAX")
+    set (mraa_LIB_X86_SRCS_NOAUTO ${PROJECT_SOURCE_DIR}/src/x86/x86.c ${PROJECT_SOURCE_DIR}/src/x86/intel_minnow_byt_compatible.c)
+  elseif (${MRAAPLATFORMFORCE} STREQUAL "MRAA_INTEL_NUC5")
+    set (mraa_LIB_X86_SRCS_NOAUTO ${PROJECT_SOURCE_DIR}/src/x86/x86.c ${PROJECT_SOURCE_DIR}/src/x86/intel_nuc5.c)
+  else ()
+    message (ERROR " - Unknown x86 platform enabled!")
+  endif ()
+else ()
+    message (INFO " - Adding support for all platforms")
+endif ()
+
 set (mraa_LIB_ARM_SRCS_NOAUTO
   ${PROJECT_SOURCE_DIR}/src/arm/arm.c
   ${PROJECT_SOURCE_DIR}/src/arm/raspberry_pi.c
index 40a4ec3..4667264 100644 (file)
@@ -26,6 +26,7 @@
 #include <string.h>
 
 #include "mraa_internal.h"
+
 #include "x86/intel_galileo_rev_d.h"
 #include "x86/intel_galileo_rev_g.h"
 #include "x86/intel_edison_fab_c.h"
@@ -36,7 +37,9 @@
 mraa_platform_t
 mraa_x86_platform()
 {
+#ifndef MRAA_PLATFORM_FORCE
     mraa_platform_t platform_type = MRAA_UNKNOWN_PLATFORM;
+
     char* line = NULL;
     // let getline allocate memory for *line
     size_t len = 0;
@@ -80,4 +83,22 @@ mraa_x86_platform()
     }
 
     return platform_type;
+#else
+    #if defined(xMRAA_INTEL_GALILEO_GEN2)
+    plat = mraa_intel_galileo_gen2();
+    #elif defined(xMRAA_INTEL_EDISON_FAB_C)
+    plat = mraa_intel_edison_fab_c();
+    #elif defined(xMRAA_INTEL_DE3815)
+    plat = mraa_intel_de3815();
+    #elif defined(xMRAA_INTEL_MINNOWBOARD_MAX)
+    plat = mraa_intel_minnowboard_byt_compatible();
+    #elif defined(xMRAA_INTEL_GALILEO_GEN1)
+    plat = mraa_intel_galileo_rev_d();
+    #elif defined(xMRAA_INTEL_NUC5)
+    plat = mraa_intel_nuc5();
+    #else
+        #error "Not using a valid platform value from mraa_platform_t - cannot compile"
+    #endif
+    return MRAA_PLATFORM_FORCE;
+#endif
 }