blob: 6dee942adbc0f1b6179c79efb338527d315a7718 [file] [log] [blame]
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