From 5f8c0ba2d5c44fccff091bcf1bc9d70730c6f166 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Thu, 22 Jan 2015 10:41:33 -1000 Subject: Added Support for C++ static initializers --- src/drivers/boards/px4fmu-v2/module.mk | 7 +++++++ src/drivers/boards/px4fmu-v2/px4fmu2_init.c | 8 ++++++++ src/modules/systemlib/up_cxxinitialize.c | 14 +++++++++----- 3 files changed, 24 insertions(+), 5 deletions(-) (limited to 'src') 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 * * Redistribution and use in source and binary forms, with or without @@ -44,9 +44,10 @@ #include -//#include -//#include "chip.h" +#include +#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 */ + -- cgit v1.2.3