From 2dd94cda3bf405545548e37823684e5b14f9ceed Mon Sep 17 00:00:00 2001 From: Brendan Le Foll Date: Thu, 3 Dec 2015 12:20:15 +0000 Subject: [PATCH] cmake: enable settign of MRAAPLATFORMFORCE to reduce libmraa.so size Signed-off-by: Brendan Le Foll --- CMakeLists.txt | 2 ++ src/CMakeLists.txt | 24 ++++++++++++++++++++++++ src/x86/x86.c | 21 +++++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e743e6..8bc536f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8859183..177bce5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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 diff --git a/src/x86/x86.c b/src/x86/x86.c index 40a4ec3..4667264 100644 --- a/src/x86/x86.c +++ b/src/x86/x86.c @@ -26,6 +26,7 @@ #include #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 } -- 2.7.4