forked from Imagelibrary/rtems
Added main() which did not require C++ support. A different main
is used based on whether C++ is enabled or disabled.
This commit is contained in:
@@ -12,11 +12,11 @@ PGM=${ARCH}/startup.rel
|
||||
NO_CTOR_LIB=${ARCH}/libno-ctor.a
|
||||
|
||||
# C source names, if any, go here -- minus the .c
|
||||
C_PIECES=bspclean bsplibc bspstart setvec
|
||||
C_PIECES=bspclean bsplibc bspstart setvec $(C_MAIN)
|
||||
C_FILES=$(C_PIECES:%=%.c)
|
||||
C_O_FILES=$(C_PIECES:%=${ARCH}/%.o)
|
||||
|
||||
CC_PIECES=rtems-ctor
|
||||
CC_PIECES=$(CXX_MAIN)
|
||||
CC_FILES=$(CC_PIECES:%=%.cc)
|
||||
CC_O_FILES=$(CC_PIECES:%=${ARCH}/%.o)
|
||||
|
||||
@@ -32,6 +32,16 @@ INSTALLED_O_FILES=$(ARCH)/rtems-ctor.o
|
||||
include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
|
||||
ifeq ($(RTEMS_HAS_CPLUSPLUS),yes)
|
||||
NO_CTOR_LIB=${ARCH}/libno-ctor.a
|
||||
INSTALLED_O_FILES=$(ARCH)/rtems-ctor.o
|
||||
CXX_MAIN=rtems-ctor
|
||||
C_MAIN=
|
||||
else
|
||||
CXX_MAIN=
|
||||
C_MAIN=main
|
||||
endif
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
54
c/src/lib/libbsp/unix/posix/startup/main.c
Normal file
54
c/src/lib/libbsp/unix/posix/startup/main.c
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Description:
|
||||
* This file exists solely to (try to) ensure RTEMS is initialized.
|
||||
* It is not to be used in systems which want C++ support.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/*
|
||||
* RTEMS program name
|
||||
* Probably not used by anyone, but it is nice to have it.
|
||||
* Actually the UNIX version of CPU_INVOKE_DEBUGGER will probably
|
||||
* need to use it
|
||||
*/
|
||||
|
||||
char *rtems_progname;
|
||||
|
||||
int main(
|
||||
int argc,
|
||||
char **argv
|
||||
)
|
||||
{
|
||||
rtems_argc = argc;
|
||||
rtems_argv = argv;
|
||||
|
||||
bsp_start();
|
||||
|
||||
if ((argc > 0) && argv && argv[0])
|
||||
rtems_progname = argv[0];
|
||||
else
|
||||
rtems_progname = "RTEMS";
|
||||
|
||||
/*
|
||||
* Start multitasking
|
||||
*/
|
||||
|
||||
rtems_initialize_executive_late( bsp_isr_level );
|
||||
|
||||
/*
|
||||
* Returns when multitasking is stopped
|
||||
* This allows our destructors to get run normally
|
||||
*/
|
||||
|
||||
fflush( stdout );
|
||||
fflush( stderr );
|
||||
|
||||
bsp_cleanup();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user