We began this discussion a while ago but did not conclude it.

I don't remember where it ended, so let's start over.

Proposal:
For "lite" devices, we only build the C code, all into one *single* static 
library. This library is called "libiotivity-lite.a". Any other .a libraries 
are build artifacts and must not be installed.

For "rich" devices, we build the C and C++ source code. Whether it is static 
or dynamic is an option chosen by the user during the run of Scons. Linux 
distributions will use shared libraries, but if you're writing an independent 
application, you'd use static (also true for iOS). I have no clue for Android.

The C++ code is split into two libraries:
 * "libiotivity.so" (or .a or .dylib), containing discovery, connectivity, 
abstractions, resource manager. It includes the C SDK API.

 * "libiotivity-services.so" (or .a or .dylib), containing all of the services

Build options:
 * if compiling statically, compile with -ffunction-sections and link 
applications with -Wl,--gc-sections
 * if compiling dynamically, compile with -fvisibility=hidden (C and C++),
-fvisibility-inlines-hidden (C++ only) and link all shared libraries and 
plugins with -Wl,--no-undefined

The build options should be centralised. I have no idea how to do that with 
Scons...
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4447 bytes
Desc: not available
URL: 
<http://lists.iotivity.org/pipermail/iotivity-dev/attachments/20150506/b44989af/attachment.p7s>

Reply via email to