aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Sidrane <david_s5@nscdg.com>2015-01-22 10:41:33 -1000
committerDavid Sidrane <david_s5@nscdg.com>2015-01-22 10:41:33 -1000
commit9b14c5e83b3ff481d94d1e60f720f97c1480b557 (patch)
tree6cbd40edc30eaad5000f317a4d851ba3bb0f2684
parent6c3523d5c3b34af82f0083c758a102161037581c (diff)
downloadpx4-firmware-9b14c5e83b3ff481d94d1e60f720f97c1480b557.tar.gz
px4-firmware-9b14c5e83b3ff481d94d1e60f720f97c1480b557.tar.bz2
px4-firmware-9b14c5e83b3ff481d94d1e60f720f97c1480b557.zip
Added Support for C++ static initializers
-rw-r--r--src/drivers/boards/px4fmu-v2/module.mk7
-rw-r--r--src/drivers/boards/px4fmu-v2/px4fmu2_init.c8
-rw-r--r--src/modules/systemlib/up_cxxinitialize.c14
3 files changed, 24 insertions, 5 deletions
diff --git a/src/drivers/boards/px4fmu-v2/module.mk b/src/drivers/boards/px4fmu-v2/module.mk
index 103232b0c..e62e48e99 100644
--- a/src/drivers/boards/px4fmu-v2/module.mk
+++ b/src/drivers/boards/px4fmu-v2/module.mk
@@ -9,4 +9,11 @@ SRCS = px4fmu_can.c \
px4fmu_usb.c \
px4fmu2_led.c
+
+ENABLE_CXXINITIALIZE=$(call check_nuttx_config ,"CONFIG_HAVE_CXX 1", $(NUTTX_CONFIG_H))
+ENABLE_CXXINITIALIZE+=$(call check_nuttx_config ,"CONFIG_HAVE_CXXINITIALIZE 1", $(NUTTX_CONFIG_H))
+ifeq ("$(ENABLE_CXXINITIALIZE)",$(nuttx_config_2true))
+SRCS += ../../../modules/systemlib/up_cxxinitialize.c
+endif
+
MAXOPTIMIZATION = -Os
diff --git a/src/drivers/boards/px4fmu-v2/px4fmu2_init.c b/src/drivers/boards/px4fmu-v2/px4fmu2_init.c
index 36ef53e2a..7fc1cd1df 100644
--- a/src/drivers/boards/px4fmu-v2/px4fmu2_init.c
+++ b/src/drivers/boards/px4fmu-v2/px4fmu2_init.c
@@ -239,6 +239,14 @@ __EXPORT int nsh_archinitialize(void)
stm32_configgpio(GPIO_VDD_5V_HIPOWER_OC);
stm32_configgpio(GPIO_VDD_5V_PERIPH_OC);
+#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
+
+ /* run C++ ctors before we go any further */
+
+ up_cxxinitialize();
+
+#endif
+
/* configure the high-resolution time/callout interface */
hrt_init();
diff --git a/src/modules/systemlib/up_cxxinitialize.c b/src/modules/systemlib/up_cxxinitialize.c
index c78f29570..4028945e5 100644
--- a/src/modules/systemlib/up_cxxinitialize.c
+++ b/src/modules/systemlib/up_cxxinitialize.c
@@ -1,8 +1,8 @@
/************************************************************************************
- * configs/stm32f4discovery/src/up_cxxinitialize.c
+ * src/modules/systemlib/up_cxxinitialize.c
* arch/arm/src/board/up_cxxinitialize.c
*
- * Copyright (C) 2012 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -44,9 +44,10 @@
#include <nuttx/arch.h>
-//#include <arch/stm32/chip.h>
-//#include "chip.h"
+#include <arch/stm32/chip.h>
+#include "chip.h"
+#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
/************************************************************************************
* Definitions
************************************************************************************/
@@ -122,7 +123,7 @@ extern uint32_t _etext;
*
***************************************************************************/
-__EXPORT void up_cxxinitialize(void)
+void up_cxxinitialize(void)
{
initializer_t *initp;
@@ -148,3 +149,6 @@ __EXPORT void up_cxxinitialize(void)
}
}
}
+
+#endif /* CONFIG_HAVE_CXX && CONFIG_HAVE_CXXINITIALIZE */
+