Browse Source
git-svn-id: http://svn.code.sf.net/p/nuttx/code/trunk@5289 42af7a65-404d-4744-a932-0658087f49c3sbg
patacongo
12 years ago
4 changed files with 128 additions and 112 deletions
@ -1,100 +1,124 @@
@@ -1,100 +1,124 @@
|
||||
misc/uClib++ README |
||||
^^^^^^^^^^^^^^^^^^^ |
||||
|
||||
This directory contains a version of the uClibc++ C++ library. This code |
||||
originates from http://cxx.uclibc.org/ and has been adapted for NuttX by the |
||||
RGMP team (http://rgmp.sourceforge.net/wiki/index.php/Main_Page). |
||||
|
||||
uClibc++ resides in the misc/ directory rather than in the main NuttX source |
||||
tree due to licensing issues: NuttX is licensed under the permissiv |
||||
modified BSD License; uClibc, on the other hand, islicensed under the |
||||
stricter GNU LGPL Version 3 license. |
||||
|
||||
Installation of uClibc++ |
||||
^^^^^^^^^^^^^^^^^^^^^^^^ |
||||
|
||||
If you wish to use uClibc++ with NuttX, you will be required to comply with |
||||
the licensing requires of the GNU LGPL Version 3 license. A simple |
||||
installation script is provided at misc/uClibc++/install.sh that can be used |
||||
to install the uClibc++ components into the NuttX source tree. |
||||
|
||||
The install script takes only a single arguement: The path to the nuttx |
||||
directory. If your directory structure is the same as the SVN structure |
||||
(with misc/ and nuttx/ at the same level), then uClibc++ can be installed |
||||
using this command executed from the misc/uClibc++ directory: |
||||
|
||||
./install.sh ../../nuttx |
||||
|
||||
If you run the install.sh like this, then it will (1) make sure you |
||||
understand that you have tainted the NuttX BSD license with LGPLv3, and (2) |
||||
copy the uClibc++ sources files into nuttx/libxx/uClibc++, include/, and |
||||
include/uClibc++. |
||||
|
||||
Make.defs File Changes |
||||
^^^^^^^^^^^^^^^^^^^^^^ |
||||
|
||||
The new files that appear in nuttx/include/uClibc++ must be include-able |
||||
as system header files. So you will need to add 'isystem $(TOPDIR)/include/uClibc++' |
||||
to the ARCHINCLUDESXX definition in the NuttX Make.defs file, perhap like: |
||||
|
||||
-ARCHINCLUDESXX = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx |
||||
+ARCHINCLUDESXX = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx -isystem $(TOPDIR)/include/uClibc++ |
||||
|
||||
And, of course, you no long need to suppress exceptions or run-time typing: |
||||
|
||||
-ARCHCPUFLAGSXX = -fno-builtin -fno-exceptions -fno-rtti |
||||
+ARCHCPUFLAGSXX = -fno-builtin |
||||
|
||||
Building NuttX with uClibc++ |
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
||||
|
||||
After installing uClibc++ in this way, no additional steps should be |
||||
required to build NuttX with the uClibc++ library incorporated: |
||||
|
||||
$ cd ../../nuttx |
||||
$ . ./setenv.sh |
||||
$ make |
||||
|
||||
Here is how it works: |
||||
|
||||
There is a new file called Make.defs in misc/uClibc/libxx/uClibc++. After |
||||
installation, it will reside at nuttx/libxx/uClibc++. The |
||||
nuttx/libxx/Makefile will (conditionally) include this Make.defs file: |
||||
|
||||
-include uClibc++/Make.defs |
||||
|
||||
This Make.defs file, if present, will add the uClibc++ source files to the |
||||
build, add the uClibc++ subdirectory to the dependency list, and add the |
||||
uClibc++ subdirectory to the VPATH. That should, in principle, be all it |
||||
takes. |
||||
|
||||
Dependencies |
||||
^^^^^^^^^^^^ |
||||
|
||||
In order to build libxx (and hence libxx/uClibc++), CONFIG_HAVE_CXX must be |
||||
defined in your NuttX configuration file. |
||||
|
||||
The C++ runtime support is provided by GCC libgcc_eh.a and libsupc++.a |
||||
libraries. |
||||
|
||||
RGMP |
||||
^^^^ |
||||
|
||||
The target platform is RGMP X86, it is also updated for TLS support which is |
||||
needed by these two libraries. So application can also use TLS on RGMP NuttX |
||||
port. |
||||
|
||||
Command to compile and install RGMP: |
||||
|
||||
$ make |
||||
$ make install |
||||
$ /usr/rgmp/setup |
||||
$ exit |
||||
|
||||
Command to compile and run NUTTX: |
||||
|
||||
$ cd nuttx/tools |
||||
$ ./configure rgmp/x86/cxxtest |
||||
$ cd .. |
||||
$ make |
||||
$ rgmp_run |
||||
misc/uClib++ README |
||||
^^^^^^^^^^^^^^^^^^^ |
||||
|
||||
This directory contains a version of the uClibc++ C++ library. This code |
||||
originates from http://cxx.uclibc.org/ and has been adapted for NuttX by the |
||||
RGMP team (http://rgmp.sourceforge.net/wiki/index.php/Main_Page). |
||||
|
||||
uClibc++ resides in the misc/ directory rather than in the main NuttX source |
||||
tree due to licensing issues: NuttX is licensed under the permissiv |
||||
modified BSD License; uClibc, on the other hand, islicensed under the |
||||
stricter GNU LGPL Version 3 license. |
||||
|
||||
Installation of uClibc++ |
||||
^^^^^^^^^^^^^^^^^^^^^^^^ |
||||
|
||||
If you wish to use uClibc++ with NuttX, you will be required to comply with |
||||
the licensing requires of the GNU LGPL Version 3 license. A simple |
||||
installation script is provided at misc/uClibc++/install.sh that can be used |
||||
to install the uClibc++ components into the NuttX source tree. |
||||
|
||||
The install script takes only a single arguement: The path to the nuttx |
||||
directory. If your directory structure is the same as the SVN structure |
||||
(with misc/ and nuttx/ at the same level), then uClibc++ can be installed |
||||
using this command executed from the misc/uClibc++ directory: |
||||
|
||||
./install.sh ../../nuttx |
||||
|
||||
If you run the install.sh like this, then it will (1) make sure you |
||||
understand that you have tainted the NuttX BSD license with LGPLv3, and (2) |
||||
copy the uClibc++ sources files into nuttx/libxx/uClibc++, include/, and |
||||
include/uClibc++. |
||||
|
||||
Dependencies |
||||
^^^^^^^^^^^^ |
||||
|
||||
1. The C++ runtime support is provided by GCC libgcc_eh.a and libsupc++.a |
||||
libraries. |
||||
2. NuttX C++ support |
||||
3. Math library |
||||
4. TLS support is currenly provided only under RGMP |
||||
|
||||
NuttX Configuration File Changes |
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
||||
|
||||
In order to build libxx (and hence libxx/uClibc++), C++ support must be |
||||
enabled. The following must be defined in your NuttX configuration file. |
||||
|
||||
CONFIG_HAVE_CXX=y |
||||
|
||||
There are many ways to provide math library support (see nuttx/README.txt). |
||||
If you choose to use the NuttX math library, that is enabled as follows: |
||||
|
||||
|
||||
CONFIG_LIBM=y |
||||
|
||||
The math libraries depend on the float.h header file that is normally |
||||
provided by your tooltchain. A dummy (and probably wrong) fload.h file |
||||
can be installed by setting: |
||||
|
||||
CONFIG_ARCH_FLOAT_H=y |
||||
|
||||
Make.defs File Changes |
||||
^^^^^^^^^^^^^^^^^^^^^^ |
||||
|
||||
The new files that appear in nuttx/include/uClibc++ must be include-able |
||||
as system header files. So you will need to add 'isystem $(TOPDIR)/include/uClibc++' |
||||
to the ARCHINCLUDESXX definition in the NuttX Make.defs file, perhap like: |
||||
|
||||
-ARCHINCLUDESXX = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx |
||||
+ARCHINCLUDESXX = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx -isystem $(TOPDIR)/include/uClibc++ |
||||
|
||||
And, of course, you no long need to suppress exceptions or run-time typing: |
||||
|
||||
-ARCHCPUFLAGSXX = -fno-builtin -fno-exceptions -fno-rtti |
||||
+ARCHCPUFLAGSXX = -fno-builtin |
||||
|
||||
|
||||
I create the nuttx/configs/rgmp/x86/cxxtest/Make.def, add the two libs to EXTRA_LIBS to be linked |
||||
to NUTTX. The code. |
||||
|
||||
Building NuttX with uClibc++ |
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
||||
|
||||
After installing uClibc++ in this way, no additional steps should be |
||||
required to build NuttX with the uClibc++ library incorporated: |
||||
|
||||
$ cd ../../nuttx |
||||
$ . ./setenv.sh |
||||
$ make |
||||
|
||||
Here is how it works: |
||||
|
||||
There is a new file called Make.defs in misc/uClibc/libxx/uClibc++. After |
||||
installation, it will reside at nuttx/libxx/uClibc++. The |
||||
nuttx/libxx/Makefile will (conditionally) include this Make.defs file: |
||||
|
||||
-include uClibc++/Make.defs |
||||
|
||||
This Make.defs file, if present, will add the uClibc++ source files to the |
||||
build, add the uClibc++ subdirectory to the dependency list, and add the |
||||
uClibc++ subdirectory to the VPATH. That should, in principle, be all it |
||||
takes. |
||||
|
||||
RGMP |
||||
^^^^ |
||||
|
||||
The target platform is RGMP X86, it is also updated for TLS support which is |
||||
needed by these two libraries. So application can also use TLS on RGMP NuttX |
||||
port. |
||||
|
||||
Command to compile and install RGMP: |
||||
|
||||
$ make |
||||
$ make install |
||||
$ /usr/rgmp/setup |
||||
$ exit |
||||
|
||||
Command to compile and run NUTTX: |
||||
|
||||
$ cd nuttx/tools |
||||
$ ./configure rgmp/x86/cxxtest |
||||
$ cd .. |
||||
$ make |
||||
$ rgmp_run |
||||
|
Loading…
Reference in new issue