diff options
author | David Sidrane <david_s5@nscdg.com> | 2015-01-22 10:41:33 -1000 |
---|---|---|
committer | David Sidrane <david_s5@nscdg.com> | 2015-03-05 08:33:55 -1000 |
commit | c2c4676b9d68b4ce08acab2baa6ca8a438e3c5ee (patch) | |
tree | 0d7698a568537373474f0f9b4d4bb69524b3c226 | |
parent | a3190663e39c97e73c5cd7bd79da7856a9393a6b (diff) | |
download | px4-firmware-c2c4676b9d68b4ce08acab2baa6ca8a438e3c5ee.tar.gz px4-firmware-c2c4676b9d68b4ce08acab2baa6ca8a438e3c5ee.tar.bz2 px4-firmware-c2c4676b9d68b4ce08acab2baa6ca8a438e3c5ee.zip |
Added Support for C++ static initializers
-rw-r--r-- | src/drivers/boards/px4fmu-v2/module.mk | 7 | ||||
-rw-r--r-- | src/drivers/boards/px4fmu-v2/px4fmu2_init.c | 8 | ||||
-rw-r--r-- | src/modules/systemlib/up_cxxinitialize.c | 14 |
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 */ + |