summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1998-05-22 11:03:03 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1998-05-22 11:03:03 +0000
commit9d09d138082b61e001fdca1b547a70aab36a25ed (patch)
tree536f37938613456e2f8e805a67114785b6370385 /c/src/lib/libbsp
parentchanged version to 980521 (diff)
downloadrtems-9d09d138082b61e001fdca1b547a70aab36a25ed.tar.bz2
Added main() which did not require C++ support. A different main
is used based on whether C++ is enabled or disabled.
Diffstat (limited to 'c/src/lib/libbsp')
-rw-r--r--c/src/lib/libbsp/unix/posix/startup/Makefile.in14
-rw-r--r--c/src/lib/libbsp/unix/posix/startup/main.c54
2 files changed, 66 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/unix/posix/startup/Makefile.in b/c/src/lib/libbsp/unix/posix/startup/Makefile.in
index ce2a77744c..d09765cd19 100644
--- a/c/src/lib/libbsp/unix/posix/startup/Makefile.in
+++ b/c/src/lib/libbsp/unix/posix/startup/Makefile.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 +=
#
diff --git a/c/src/lib/libbsp/unix/posix/startup/main.c b/c/src/lib/libbsp/unix/posix/startup/main.c
new file mode 100644
index 0000000000..520cd36b04
--- /dev/null
+++ b/c/src/lib/libbsp/unix/posix/startup/main.c
@@ -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;
+}