blob: 6dee942adbc0f1b6179c79efb338527d315a7718 [file] [log] [blame]
Alexandre Lisionddd731e2014-01-31 11:50:08 -05001Generic & Embedded Targets:
2
3By default, UCommon compiles with full support of C++ and the C++ ansi
4library. For deeply embedded targets, the stdc++ library (libstdc++ for
5gcc) can be disabled, along with exception handling and other C++
6features that may add to runtime overhead. This is done using the
7--disable-stdcpp configure option. Any modern C++ compiler and posix
8platform with basic pthread support should be able to build UCommon
9successfully.
10
11Whether UCommon is compiled with or without c++ ansi library support, it
12should still be possible to mix and match UCommon code with software
13that is built with standard C++ runtimes. However, note that when std
14c++ is disabled, in addition to stripping out some library routines
15which depend on the C++ ansi library, exception handling and rtti is
16also disabled for the ucommon library.
17
18When using only static linking, the c++ ansi libraries are also disabled
19by default. This is to prevent bloat from static linkage of the ansi
20C++ library and static linkage is most common on embedded targets. The
21--enable-stdcpp option can be used to re-enable the full ansi c++
22library.
23
24Project Indiana/OpenSolaris specific notes:
25
26You need to install SUNWhea or configure will fail on the preprocessor.
27You can use the Sun Studio 12 compiler as well as gcc. When building
28without Sun std c++ support (--disable-stdcpp), -lCrun is added alone
29without -lCstd.
30
31To make autogen.sh work (or svn checkout) requires a bunch of packages
32and setting the AUTOMAKE_SUFFIX="-1.10". You need
33SUNWgnome-common-devel, SUNWgm4, SUNWgmake, SUNWaconf,
34SUNWautomake-1.10, and SUNWlibtool.
35
36Microsoft Windows & MingW32 specific notes:
37
38For Microsoft Windows targets, we primarily focus on using debian hosted
39mingw32 cross-builds. Since libstdc++ is statically linked, we use the
40c model and build the ucommon subset by default, as otherwise software
41that uses plugins would be hugely bloated. Full libstdc++ support can
42always be re-enabled explicitly using --enable-stdcpp.
43
44It should be possible to build ucommon using Microsoft native compilers, and if
45people wish to submit patches for code changes based on using native Microsoft
46compilers, they will be accepted so long as they do not break other build
47environments. Native Microsoft Visual studio files may be generated using
48cmake. We do not recommend the use of proprietary compilers on proprietary
49operating systems, and we will continue to work to make the debian hosted mingw
50build environment as effective for building our packages as we can.
51
52Support for older GCC (<3.x):
53
54UCommon, like GNU Common C++, is meant to compile anywhere a C++
55compiler exists. However, there are specific limitations in gcc < 3,
56particularly in relation to namespace support. For this reason, we
57disable libstdc++ support by default, although again it can be enabled
58using --enable-stdcpp.
59
60QNX (Neutrino) Hosts & Targets:
61
62QNX distributes and uses both gcc 2.95.3 and 3.3.1, but the latter is
63only with the latest 6.3.x series release. The userland build tools are
64old and broken for svn checkout to automake build, including libtool
651.4.x. Nontheless we are able to support direct hosting and builds of
66ucommon on QNX. Those using tarballs from official distributions should
67not have these problems.
68
69Since gcc 2.95 is the default, the default builds without stdc++. Even
70worse, if you enable libstdc++ (--enable-stdcpp), the resulting
71executables will compile and link, but will fail at runtime with symbol
72link errors. However, executables built and linked with ucommon with
73stdcpp disabled do link and run fine (and the "make check" tests will
74pass). Strange.
75
76Minix and other non-pthread posix targets:
77
78Starting with 1.8.1, uCommon will optionally build with GNU pth. This
79can be used to establish uCommon C++ threaded design architecture on
80platforms which do not natively support true threading, such as Minix.
81On platforms that attempt to simulate threading with user mode non
82pre-emptive threading, it is recommended to use uCommon with GNU pth
83even if there is a local library that simulates pthread functionality.
84The reason is that uCommon also wraps and schedules I/O operations
85through the pth I/O functions.
86
87Recent Platforms and Versions Tested:
88
89GNU/Linux gcc 6.0.0 x86, x86_64, arm, mipsel
90GNU/Linux clang 6.0.0 x86_64
91OpenBSD4 6.0.0 i386
92NetBSD5 4.0.0 i386
93OpenSolaris sunwpro 6.0.0 x86_64 (double) conv of DateTime fails,
94 applog.cpp std::map failure
95OS/X 6.0.0 ppc, x86
96QNX (gcc 2.95) 1.8.1 i386
97MingW/cross 6.0.0 i386, x86 ipv6 broken in wine unit tests
98Cygwin 1.8.0 i386
99