| Generic & Embedded Targets: |
| |
| By default, UCommon compiles with full support of C++ and the C++ ansi |
| library. For deeply embedded targets, the stdc++ library (libstdc++ for |
| gcc) can be disabled, along with exception handling and other C++ |
| features that may add to runtime overhead. This is done using the |
| --disable-stdcpp configure option. Any modern C++ compiler and posix |
| platform with basic pthread support should be able to build UCommon |
| successfully. |
| |
| Whether UCommon is compiled with or without c++ ansi library support, it |
| should still be possible to mix and match UCommon code with software |
| that is built with standard C++ runtimes. However, note that when std |
| c++ is disabled, in addition to stripping out some library routines |
| which depend on the C++ ansi library, exception handling and rtti is |
| also disabled for the ucommon library. |
| |
| When using only static linking, the c++ ansi libraries are also disabled |
| by default. This is to prevent bloat from static linkage of the ansi |
| C++ library and static linkage is most common on embedded targets. The |
| --enable-stdcpp option can be used to re-enable the full ansi c++ |
| library. |
| |
| Project Indiana/OpenSolaris specific notes: |
| |
| You need to install SUNWhea or configure will fail on the preprocessor. |
| You can use the Sun Studio 12 compiler as well as gcc. When building |
| without Sun std c++ support (--disable-stdcpp), -lCrun is added alone |
| without -lCstd. |
| |
| To make autogen.sh work (or svn checkout) requires a bunch of packages |
| and setting the AUTOMAKE_SUFFIX="-1.10". You need |
| SUNWgnome-common-devel, SUNWgm4, SUNWgmake, SUNWaconf, |
| SUNWautomake-1.10, and SUNWlibtool. |
| |
| Microsoft Windows & MingW32 specific notes: |
| |
| For Microsoft Windows targets, we primarily focus on using debian hosted |
| mingw32 cross-builds. Since libstdc++ is statically linked, we use the |
| c model and build the ucommon subset by default, as otherwise software |
| that uses plugins would be hugely bloated. Full libstdc++ support can |
| always be re-enabled explicitly using --enable-stdcpp. |
| |
| It should be possible to build ucommon using Microsoft native compilers, and if |
| people wish to submit patches for code changes based on using native Microsoft |
| compilers, they will be accepted so long as they do not break other build |
| environments. Native Microsoft Visual studio files may be generated using |
| cmake. We do not recommend the use of proprietary compilers on proprietary |
| operating systems, and we will continue to work to make the debian hosted mingw |
| build environment as effective for building our packages as we can. |
| |
| Support for older GCC (<3.x): |
| |
| UCommon, like GNU Common C++, is meant to compile anywhere a C++ |
| compiler exists. However, there are specific limitations in gcc < 3, |
| particularly in relation to namespace support. For this reason, we |
| disable libstdc++ support by default, although again it can be enabled |
| using --enable-stdcpp. |
| |
| QNX (Neutrino) Hosts & Targets: |
| |
| QNX distributes and uses both gcc 2.95.3 and 3.3.1, but the latter is |
| only with the latest 6.3.x series release. The userland build tools are |
| old and broken for svn checkout to automake build, including libtool |
| 1.4.x. Nontheless we are able to support direct hosting and builds of |
| ucommon on QNX. Those using tarballs from official distributions should |
| not have these problems. |
| |
| Since gcc 2.95 is the default, the default builds without stdc++. Even |
| worse, if you enable libstdc++ (--enable-stdcpp), the resulting |
| executables will compile and link, but will fail at runtime with symbol |
| link errors. However, executables built and linked with ucommon with |
| stdcpp disabled do link and run fine (and the "make check" tests will |
| pass). Strange. |
| |
| Minix and other non-pthread posix targets: |
| |
| Starting with 1.8.1, uCommon will optionally build with GNU pth. This |
| can be used to establish uCommon C++ threaded design architecture on |
| platforms which do not natively support true threading, such as Minix. |
| On platforms that attempt to simulate threading with user mode non |
| pre-emptive threading, it is recommended to use uCommon with GNU pth |
| even if there is a local library that simulates pthread functionality. |
| The reason is that uCommon also wraps and schedules I/O operations |
| through the pth I/O functions. |
| |
| Recent Platforms and Versions Tested: |
| |
| GNU/Linux gcc 6.0.0 x86, x86_64, arm, mipsel |
| GNU/Linux clang 6.0.0 x86_64 |
| OpenBSD4 6.0.0 i386 |
| NetBSD5 4.0.0 i386 |
| OpenSolaris sunwpro 6.0.0 x86_64 (double) conv of DateTime fails, |
| applog.cpp std::map failure |
| OS/X 6.0.0 ppc, x86 |
| QNX (gcc 2.95) 1.8.1 i386 |
| MingW/cross 6.0.0 i386, x86 ipv6 broken in wine unit tests |
| Cygwin 1.8.0 i386 |
| |