Switch commoncpp2 to ucommon to solve dependency conflicts.

libccrtp was depending on commoncpp2, and have been replaced by a version
depending on ucommon as well.
diff --git a/jni/libucommon/sources/CMakeLists.txt b/jni/libucommon/sources/CMakeLists.txt
new file mode 100644
index 0000000..43610f4
--- /dev/null
+++ b/jni/libucommon/sources/CMakeLists.txt
@@ -0,0 +1,593 @@
+# Copyright (C) 2009 David Sugar, Tycho Softworks
+#
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# This is a simplified build system for GNU uCommon.  In particular, it
+# offers limited cmodel linkage support, at least for mingw32 support (and
+# probably visual c 6 also).  If one really needs to do such things outside
+# these use cases, it is suggested to continue using the existing autotools
+# configure script driven build environment instead.  Mostly the cmake one is
+# meant for generating project files for those working with IDE's to do
+# otherwise generic builds of the library and supporting applications.
+
+cmake_minimum_required(VERSION 2.6)
+PROJECT(ucommon)
+set (VERSION 6.0.7)
+
+set(RC_VERSION ${VERSION})
+STRING(REGEX REPLACE "[.]" "," RC_VERSION ${RC_VERSION})
+set(RC_VERSION "${RC_VERSION},0")
+
+set(SOVERSION ${VERSION})
+STRING(REGEX REPLACE "[.].*$" "" SOVERSION ${SOVERSION})
+
+# when we override default install prefix, assume full path is used...
+
+set(INSTALL_INCLUDEDIR include)
+set(INSTALL_BINDIR bin)
+
+if(WIN32)
+    set(INSTALL_MANDIR man)
+    set(INSTALL_DOCDIR doc/${PROJECT_NAME})
+    set(INSTALL_LOCALE locale)
+    set(INSTALL_LIBDIR bin)
+    set(INSTALL_SBINDIR bin)
+    set(INSTALL_INFODIR info)
+    set(SYSCONFDIR "etc" CACHE PATH "config directory")
+    set(STATEDIR "var" CACHE PATH "state directory")
+else()
+    if (NOT LIB_SUFFIX)
+        if (NOT EXISTS /etc/debian_version)
+            if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
+                set(LIB_SUFFIX 64)
+            endif()
+        endif()
+    endif()
+    set(INSTALL_SBINDIR sbin)
+    set(INSTALL_MANDIR share/man)
+    set(INSTALL_LOCALE share/locale)
+    set(INSTALL_DOCDIR share/doc/${PROJECT_NAME})
+    set(INSTALL_INFODIR share/info)
+    set(INSTALL_LIBDIR lib${LIB_SUFFIX})
+    set(SYSCONFDIR "/etc" CACHE PATH "config directory")
+    set(STATEDIR "/var" CACHE PATH "state directory")
+endif()
+
+set(UCOMMON_LOCALE ${CMAKE_INSTALL_PREFIX}/${INSTALL_LOCALE})
+set(UCOMMON_PREFIX ${CMAKE_INSTALL_PREFIX})
+
+set(UCOMMON_CFGPATH ${SYSCONFDIR})
+set(UCOMMON_VARPATH ${STATEDIR})
+
+# project options
+
+if(MSVC60)
+    set(BUILD_STATIC ON CACHE BOOL "static linking only" FORCE)
+    set(BUILD_STDLIB OFF CACHE BOOL "disable C++ stdlib" FORCE)
+    set(POSIX_TIMERS OFF CACHE BOOL "does not use posix timers" FORCE)
+    set(GCC_ATOMICS OFF CACHE BOOL "does not use gcc atomics" FORCE)
+    MARK_AS_ADVANCED(FORCE BUILD_STDLIB BUILD_STATIC POSIX_TIMERS GCC_ATOMICS)
+elseif(WIN32)
+        option(BUILD_RUNTIME "Set to OFF to build static runtime" ON)
+        if(BUILD_RUNTIME)
+            set(BUILD_RUNTIME_TYPE SHARED)
+        endif()
+    option(BUILD_STATIC "Set to OFF to build shared libraries" ON)
+    option(BUILD_STDLIB "Set to OFF to disable C++ stdlib" ON)
+    set(POSIX_TIMERS OFF CACHE BOOL "does not use posix timers" FORCE)
+    set(GCC_ATOMICS OFF CACHE BOOL "does not use gcc atomics" FORCE)
+else()
+    option(BUILD_STATIC "Set to ON to build static libraries" OFF)
+    option(BUILD_STDLIB "Set to OFF to disable C++ stdlib" ON)
+    option(POSIX_TIMERS "Set to ON to enable" OFF)
+    option(GCC_ATOMICS "Set to ON to enable" OFF)
+endif()
+
+MARK_AS_ADVANCED(POSIX_TIMERS GCC_ATOMICS)
+
+option(BUILD_TESTING "Set to ON to build test programs" OFF)
+
+MESSAGE( STATUS "Configuring GNU ${PROJECT_NAME} ${VERSION}...")
+include(CheckFunctionExists)
+include(CheckLibraryExists)
+include(CheckIncludeFiles)
+include(CTest)
+
+SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME} library")
+SET(CPACK_PACKAGE_VENDOR              "David Sugar")
+SET(CPACK_PACKAGE_DESCRIPTION_FILE    "${CMAKE_CURRENT_SOURCE_DIR}/README")
+SET(CPACK_RESOURCE_FILE_LICENSE       "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
+set(PACKAGE_FILE_NAME                 ${PROJECT_NAME})
+set(PACKAGE_FILE_VERSION              ${VERSION})
+
+IF (WIN32)
+    SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_FILE_NAME}-${PACKAGE_FILE_VERSION}")
+ELSE (WIN32)
+    SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_FILE_NAME}-bin-${PACKAGE_FILE_VERSION}")
+    if (NOT CPACK_GENERATOR)
+        SET(CPACK_GENERATOR "TBZ2")
+    endif()
+ENDIF (WIN32)
+
+IF(WIN32 AND NOT UNIX)
+    SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_FILE_NAME}")
+
+    # There is a bug in NSI that does not handle full unix paths properly. Make
+    # sure there is at least one set of four (4) backlasshes.
+    # SET(CPACK_PACKAGE_ICON "${CMake_SOURCE_DIR}/Utilities/Release\\\\InstallIcon.bmp")
+    # SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\MyExecutable.exe")
+    SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}$")
+    SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.gnutelephony.org")
+    SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.gnutelephony.org")
+    SET(CPACK_NSIS_CONTACT "dyfet@gnutelephony.org")
+    SET(CPACK_NSIS_MODIFY_PATH ON)
+
+ENDIF(WIN32 AND NOT UNIX)
+
+set(CPACK_COMPONENTS_ALL libraries headers)
+set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries")
+set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME   "C++ Headers")
+set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION  "Dynamic library")
+set(CPACK_COMPONENT_HEADERS_DESCRIPTION
+    "Header files needed to build applications using ucommon library")
+
+# The following components are regex's to match anywhere (unless anchored)
+# in absolute path + filename to find files or directories to be excluded
+# from source tarball.
+SET (CPACK_SOURCE_IGNORE_FILES
+#svn, git files
+"\\\\.svn/" "\\\\.cvsignore$" "/\\\\.git/"
+# temporary files
+"\\\\.swp$"
+# backup files
+"~$"
+# eclipse, kdevelop and othe IDE files
+"\\\\.cdtproject$" "\\\\.cproject$" "\\\\.project$" "\\\\.settings/" "\\\\.kdev4/" "\\\\.kdev4$"
+# others
+"\\\\.#" "/#"
+# don't copy build and other dirs used for building
+"/build/" "/autom4te\\\\.cache/" "/_build/"
+# used before
+"/CVS/" "/\\\\.libs/" "/\\\\.deps/" "\\\\.o$" "\\\\.lo$" "\\\\.la$" "\\\\.sh$" "Makefile\\\\.in$")
+
+SET(CPACK_SOURCE_GENERATOR "TBZ2")
+SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${PACKAGE_FILE_NAME}-${PACKAGE_FILE_VERSION}")
+
+# This must always be last!
+INCLUDE(CPack)
+
+# set to true for debug and trace during CMakeLists development
+set(CMAKE_VERBOSE_MAKEFILE FALSE)
+
+# add module path of project if it exists...
+if (EXISTS "${CMAKE_SOURCE_DIR}/inc/")
+    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/inc/")
+endif()
+
+include (inc/ucommon.cmake)
+
+find_package(Threads)
+if (CMAKE_HAVE_PTHREAD_H)
+    set(HAVE_PTHREAD_H TRUE)
+endif()
+set (UCOMMON_LIBS ${UCOMMON_LIBS} ${CMAKE_THREAD_LIBS_INIT} ${WITH_LDFLAGS})
+
+if (MINGW OR MSYS)
+    set (UCOMMON_LIBS ${UCOMMON_LIBS} mingwex mingw32)
+else()
+    if (WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
+        set (UCOMMON_LIBS ${UCOMMON_LIBS} mingwex mingw32)
+    endif()
+endif()
+
+if (WIN32 OR MINGW OR MSYS OR CMAKE_SYSTEM MATCHES "Windows")
+    set (UCOMMON_LIBS ${UCOMMON_LIBS} crypt32 advapi32 user32 ws2_32 wsock32 kernel32)
+endif()
+
+if(UNIX AND NOT BUILD_STDLIB)
+    set(UCOMMON_LIBS ${UCOMMON_LIBS} c)
+endif()
+
+if(MSYS OR MINGW)
+    set(UCOMMON_LIBS ${UCOMMON_LIBS} msvcrt)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX AND NOT BUILD_STDLIB)
+    check_library_exists(gcc __modsi3 "" HAVE_GCC_LIB)
+    if(HAVE_GCC_LIB)
+            set(UCOMMON_LIBS ${UCOMMON_LIBS} gcc)
+    endif()
+endif()
+
+
+if(UNIX OR MSYS OR MINGW OR CYGWIN)
+    check_library_exists(dl dlopen "" HAVE_DL_LIB)
+    if (HAVE_DL_LIB)
+        set (UCOMMON_LIBS ${UCOMMON_LIBS} dl)
+    else()
+        check_library_exists(compat dlopen "" HAVE_COMPAT_LIB)
+        if(HAVE_COMPAT_LIB)
+            set (UCOMMON_LIBS ${UCOMMON_LIBS} compat)
+        endif()
+    endif()
+
+    check_library_exists(dld shl_load "" HAVE DLD_LIB)
+    if (HAVE_DLD_LIB)
+        set (UCOMMON_LIBS ${UCOMMON_LIBS} dld)
+    endif()
+
+    check_library_exists(socket socket "" HAVE_SOCKET_LIB)
+    if (HAVE_SOCKET_LIB)
+        set (UCOMMON_LIBS ${UCOMMON_LIBS} socket)
+    endif()
+
+    check_library_exists(posix4 sem_wait "" HAVE_POSIX4_LIB)
+    if (HAVE_POSIX4_LIB)
+        set(UCOMMON_LIBS ${UCOMMON_LIBS} posix4)
+    endif()
+
+    check_library_exists(rt clock_gettime "" HAVE_RT_LIB)
+    if (HAVE_RT_LIB)
+        set(UCOMMON_LIBS ${UCOMMON_LIBS} rt)
+    endif()
+endif()
+
+set (CMAKE_REQUIRED_LIBRARIES ${UCOMMON_LIBS})
+check_function_exists(getaddrinfo HAVE_GETADDRINFO)
+check_function_exists(socketpair HAVE_SOCKETPAIR)
+check_function_exists(inet_ntop HAVE_INET_NTOP)
+check_function_exists(gethostbyname2 HAVE_GETHOSTBYNAME2)
+check_function_exists(strcoll HAVE_STRCOLL)
+check_function_exists(stricmp HAVE_STRICMP)
+check_function_exists(stristr HAVE_STRISTR)
+check_function_exists(sysconf HAVE_SYSCONF)
+check_function_exists(posix_memalign HAVE_POSIX_MEMALIGN)
+check_function_exists(dlopen HAVE_DLOPEN)
+check_function_exists(shl_open HAVE_SHL_OPEN)
+check_function_exists(pthread_condattr_setclock HAVE_PTHREAD_CONDATTR_SETCLOCK)
+check_function_exists(pthread_setconcurrency HAVE_PTHREAD_SETCONCURRENCY)
+check_function_exists(pthread_yield HAVE_PTHREAD_YIELD)
+check_function_exists(pthread_yield_np HAVE_PTHREAD_YIELD_NP)
+check_function_exists(pthread_delay HAVE_PTHREAD_DELAY)
+check_function_exists(pthread_delay_np HAVE_PTHREAD_DELAY_NP)
+check_function_exists(pthread_setschedprio HAVE_PTHREAD_SETSCHEDPRIO)
+check_function_exists(ftok HAVE_FTOK)
+check_function_exists(shm_open HAVE_SHM_OPEN)
+check_function_exists(localtime_r HAVE_LOCALTIME_R)
+check_function_exists(gmtime_r HAVE_GMTIME_R)
+check_function_exists(strerror_r HAVE_STRERROR_R)
+check_function_exists(nanosleep HAVE_NANOSLEEP)
+check_function_exists(clock_nanosleep HAVE_CLOCK_NANOSLEEP)
+check_function_exists(clock_gettime HAVE_CLOCK_GETTIME)
+check_function_exists(posix_fadvise HAVE_POSIX_FADVISE)
+check_function_exists(ftruncate HAVE_FTRUNCATE)
+check_function_exists(pwrite HAVE_PWRITE)
+check_function_exists(setpgrp HAVE_SETPGRP)
+check_function_exists(setlocale HAVE_SETLOCALE)
+check_function_exists(gettext HAVE_GETTEXT)
+check_function_exists(execvp HAVE_EXECVP)
+check_function_exists(atexit HAVE_ATEXIT)
+check_function_exists(lstat HAVE_LSTAT)
+check_function_exists(realpath HAVE_REALPATH)
+check_function_exists(symlink HAVE_SYMLINK)
+check_function_exists(readlink HAVE_READLINK)
+check_function_exists(waitpid HAVE_WAITPID)
+check_function_exists(wait4 HAVE_WAIT4)
+
+check_include_files(sys/stat.h HAVE_SYS_STAT_H)
+check_include_files(strings.h HAVE_STRINGS_H)
+check_include_files(stdlib.h HAVE_STDLIB_H)
+check_include_files(string.h HAVE_STRING_H)
+check_include_files(memory.h HAVE_MEMORY_H)
+check_include_files(inttypes.h HAVE_INTTYPES_H)
+check_include_files(dlfcn.h HAVE_DLFCN_H)
+check_include_files(stdint.h HAVE_STDINT_H)
+check_include_files(poll.h HAVE_POLL_H)
+check_include_files(sys/mman.h HAVE_SYS_MMAN_H)
+check_include_files(sys/shm.h HAVE_SYS_SHM_H)
+check_include_files(sys/poll.h HAVE_SYS_POLL_H)
+check_include_files(sys/timeb.h HAVE_SYS_TIMEB_H)
+check_include_files(sys/types.h HAVE_SYS_TYPES_H)
+check_include_files(sys/wait.h HAVE_SYS_WAIT_H)
+check_include_files(endian.h HAVE_ENDIAN_H)
+check_include_files(sys/filio.h HAVE_SYS_FILIO_H)
+check_include_files(dirent.h HAVE_DIRENT_H)
+check_include_files(unistd.h HAVE_UNISTD_H)
+check_include_files(sys/resource.h HAVE_SYS_RESOURCE_H)
+check_include_files(wchar.h HAVE_WCHAR_H)
+check_include_files(mach/clock.h HAVE_MACH_CLOCK_H)
+check_include_files(mach-o/dyld.h HAVE_MACH_O_DYLD_H)
+check_include_files(linux/version.h HAVE_LINUX_VERSION_H)
+check_include_files(regex.h HAVE_REGEX_H)
+check_include_files(sys/inotify.h HAVE_SYS_INOTIFY_H)
+check_include_files(sys/event.h HAVE_SYS_EVENT_H)
+check_include_files(syslog.h HAVE_SYSLOG_H)
+check_include_files(openssl/ssl.h HAVE_OPENSSL)
+check_include_files(openssl/fips.h HAVE_OPENSSL_FIPS_H)
+check_include_files(libintl.h HAVE_LIBINTL_H)
+check_include_files(netinet/in.h HAVE_NETINET_IN_H)
+check_include_files(net/if.h HAVE_NET_IF_H)
+check_include_files(fcntl.h HAVE_FCNTL_H)
+check_include_files(termios.h HAVE_TERMIOS_H)
+check_include_files(termio.h HAVE_TERMIO_H)
+check_include_files(sys/param.h HAVE_SYS_PARAM_H)
+check_include_files(sys/file.h HAVE_SYS_FILE_H)
+check_include_files(sys/lockf.h HAVE_SYS_LOCKF_H)
+check_include_files(regex.h HAVE_REGEX_H)
+
+if(HAVE_REGEX_H)
+    check_library_exists(regex regfree "" HAVE_REGEX_LIB)
+    if(HAVE_REGEX_LIB OR MINGW OR MSYS)
+        set(UCOMMON_LIBS ${UCOMMON_LIBS} "regex")
+    endif()
+endif()
+
+set(UCOMMON_LIBS ${UCOMMON_LIBS} ${UCOMMON_LINKING})
+
+# for some reason, normal library searches always fail on broken windows
+if (WIN32 AND NOT UNIX AND NOT MINGW AND NOT MSYS)
+    set(HAVE_GETADDRINFO True)
+    set(HAVE_INET_NTOP True)
+endif()
+
+# we can mklink a build framework to top directory of a project...
+# this is done because we may have a project specific optimized build of
+# common libraries such as openssl...
+if(WIN32 AND EXISTS "${CMAKE_BINARY_DIR}/Frameworks/OpenSSL")
+    set(OPENSSL_FOUND TRUE)
+    if(EXISTS ${CMAKE_BINARY_DIR}/Frameworks/OpenSSL/inc32)
+        set(OPENSSL_INCLUDE_DIR ${CMAKE_BINARY_DIR}/Frameworks/OpenSSL/inc32)
+    else()
+        set(OPENSSL_INCLUDE_DIR ${CMAKE_BINARY_DIR}/Frameworks/OpenSSL/include)
+    endif()
+    if(NOT BUILD_STATIC AND EXISTS ${CMAKE_BINARY_DIR}/Frameworks/OpenSSL/out32dll)
+        set(OPENSSL_LIBRARIES ${CMAKE_BINARY_DIR}/Frameworks/OpenSSL/out32dll/ssleay32.lib ${CMAKE_BINARY_DIR}/Frameworks/OpenSSL/lib/libeay32.lib)
+    else()
+        set(OPENSSL_LIBRARIES ${CMAKE_BINARY_DIR}/Frameworks/OpenSSL/out32dll/ssleay32.lib ${CMAKE_BINARY_DIR}/Frameworks/OpenSSL/lib/libeay32.lib)
+    endif()
+endif()
+
+# alternate we use generic cmake openssl search...
+if(NOT HAVE_OPENSSL AND NOT OPENSSL_FOUND)
+    FIND_PACKAGE(OpenSSL)
+endif()
+
+# common build options can be passed to cmake using WITH_CFLAGS, WITH_LIBS,
+# and WITH_INCLUDES.
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc ${WITH_INCLUDES})
+add_definitions(${UCOMMON_FLAGS} ${WITH_CFLAGS})
+link_libraries(${WITH_LIBS})
+
+# by default we build static libs for windows, shared libs for unix.
+# we may also set this from a top level cmake or -DWITH_XX_LIBS
+
+if(BUILD_STATIC)
+    set(BUILD_LIBRARY_TYPE STATIC)
+else()
+    set(BUILD_LIBRARY_TYPE SHARED)
+endif()
+
+if(NOT BUILD_RUNTIME_TYPE)
+    set(BUILD_RUNTIME_TYPE ${BUILD_LIBRARY_TYPE})
+endif()
+
+file(GLOB common_src corelib/*.cpp)
+file(GLOB ucommon_inc inc/ucommon/*.h)
+file(GLOB commoncpp_src commoncpp/*.cpp)
+file(GLOB commoncpp_inc inc/commoncpp/*.h)
+file(GLOB ucommon_man utils/*.1)
+set(ucommon_man commoncpp-config.1 ucommon-config.1 ${ucommon_man})
+list(REMOVE_ITEM ucommon_inc inc/ucommon/secure.h)
+
+if(HAVE_OPENSSL)
+    set(secure_inc inc/ucommon/secure.h)
+    file(GLOB secure_src openssl/*.cpp openssl/*.h)
+    list(APPEND secure_src nossl/common.cpp)
+    if(MINGW)
+        set(SECURE_LIBS ssl crypto gdi32 z)
+    elseif(WIN32 AND NOT CYGWIN)
+        set(SECURE_LIBS ssleay32 libeay32 gdi32)
+    else()
+        set(SECURE_LIBS ssl crypto)
+    endif()
+elseif(OPENSSL_FOUND)
+    file(GLOB secure_src openssl/*.cpp openssl/*.h)
+    list(APPEND secure_src nossl/common.cpp)
+    include_directories(${OPENSSL_INCLUDE_DIR})
+    set(SECURE_LIBS ${OPENSSL_LIBRARIES})
+else()
+    file(GLOB secure_src nossl/*.cpp nossl/*.h)
+endif()
+
+if(NOT WIN32)
+    foreach(flag ${UCOMMON_FLAGS})
+        set(PACKAGE_FLAGS "${PACKAGE_FLAGS} ${flag}")
+    endforeach()
+    foreach(lib ${UCOMMON_LIBS})
+        STRING(REGEX REPLACE "^[-]l" "" slib ${lib})
+        set(PACKAGE_LIBS "${PACKAGE_LIBS} -l${slib}")
+    endforeach()
+    foreach(lib ${SECURE_LIBS})
+        STRING(REGEX REPLACE "^[-]l" "" slib ${lib})
+        set(ADDITIONAL_LIBS "${ADDITIONAL_LIBS} -l${slib}")
+    endforeach()
+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc)
+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config)
+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.spec.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.spec @ONLY)
+
+    if(BUILD_STDLIB)
+        configure_file(${CMAKE_CURRENT_SOURCE_DIR}/commoncpp.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/commoncpp.pc)
+        configure_file(${CMAKE_CURRENT_SOURCE_DIR}/commoncpp-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/commoncpp-config)
+    endif()
+endif(NOT WIN32)
+
+configure_file(ucommon-config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/ucommon-config.h)
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+add_library(ucommon ${BUILD_RUNTIME_TYPE} ${common_src} ${ucommon_inc})
+set_target_properties(ucommon PROPERTIES VERSION ${VERSION} SOVERSION ${SOVERSION})
+target_link_libraries(ucommon ${UCOMMON_LIBS} ${WITH_LIBS})
+
+add_library(usecure ${BUILD_LIBRARY_TYPE} ${secure_src} ${secure_inc})
+set_target_properties(usecure PROPERTIES VERSION ${VERSION} SOVERSION ${SOVERSION})
+target_link_libraries(usecure ucommon ${WITH_LIBS} ${SECURE_LIBS} ${UCOMMON_LIBS})
+add_dependencies(usecure ucommon)
+
+if(BUILD_STDLIB)
+    add_library(commoncpp ${BUILD_LIBRARY_TYPE} ${commoncpp_src} ${commoncpp_inc})
+    set_target_properties(commoncpp PROPERTIES VERSION ${VERSION} SOVERSION ${SOVERSION})
+    target_link_libraries(commoncpp ucommon ${UCOMMON_LIBS} ${WITH_LIBS} ${SECURE_LIBS})
+    add_dependencies(commoncpp ucommon)
+endif()
+
+add_executable(ucommon-args utils/args.cpp)
+add_dependencies(ucommon-args ucommon)
+set_target_properties(ucommon-args PROPERTIES OUTPUT_NAME args)
+target_link_libraries(ucommon-args ucommon ${UCOMMON_LIBS} ${WITH_LIBS})
+
+add_executable(usecure-car utils/car.cpp)
+add_dependencies(usecure-car usecure ucommon)
+set_target_properties(usecure-car PROPERTIES OUTPUT_NAME car)
+target_link_libraries(usecure-car usecure ucommon ${SECURE_LIBS} ${UCOMMON_LIBS} ${WITH_LIBS})
+
+add_executable(ucommon-pdetach utils/pdetach.cpp)
+add_dependencies(ucommon-pdetach ucommon)
+set_target_properties(ucommon-pdetach PROPERTIES OUTPUT_NAME pdetach)
+target_link_libraries(ucommon-pdetach ucommon ${UCOMMON_LIBS} ${WITH_LIBS})
+
+add_executable(ucommon-sockaddr utils/sockaddr.cpp)
+add_dependencies(ucommon-sockaddr ucommon)
+set_target_properties(ucommon-sockaddr PROPERTIES OUTPUT_NAME sockaddr)
+target_link_libraries(ucommon-sockaddr ucommon ${UCOMMON_LIBS} ${WITH_LIBS})
+
+add_executable(usecure-scrub utils/scrub.cpp)
+add_dependencies(usecure-scrub usecure ucommon)
+set_target_properties(usecure-scrub PROPERTIES OUTPUT_NAME scrub-files)
+target_link_libraries(usecure-scrub usecure ucommon ${SECURE_LIBS} ${UCOMMON_LIBS} ${WITH_LIBS})
+
+add_executable(usecure-mdsum utils/mdsum.cpp)
+add_dependencies(usecure-mdsum usecure ucommon)
+set_target_properties(usecure-mdsum PROPERTIES OUTPUT_NAME mdsum)
+target_link_libraries(usecure-mdsum usecure ucommon ${SECURE_LIBS} ${UCOMMON_LIBS} ${WITH_LIBS})
+
+add_executable(usecure-zerofill utils/zerofill.cpp)
+add_dependencies(usecure-zerofill usecure ucommon)
+set_target_properties(usecure-zerofill PROPERTIES OUTPUT_NAME zerofill)
+target_link_libraries(usecure-zerofill usecure ucommon ${SECURE_LIBS} ${UCOMMON_LIBS} ${WITH_LIBS})
+
+find_package(Doxygen)
+
+if (DOXYGEN_FOUND)
+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxy.config.cmake
+        ${CMAKE_CURRENT_BINARY_DIR}/doxy.config
+        @ONLY )
+
+    seT(DOXY_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/doxy.config")
+
+    #add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${DOXY_CONFIG})
+    add_custom_target(doc
+                    ${DOXYGEN_EXECUTABLE} ${DOXY_CONFIG}
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+                    COMMENT "Generating API documentation with Doxygen" VERBATIM
+                   )
+
+    #
+    # TODO an: taken from internet, to be tested
+    #
+    # create a windows help .chm file using hhc.exe
+    # HTMLHelp DLL must be in path!
+    # fallback: use hhw.exe interactively
+    IF    (WIN32)
+        FIND_PACKAGE(HTMLHelp)
+        IF   (HTML_HELP_COMPILER)
+            SET (TMP "${CMAKE_CURRENT_BINARY_DIR}\\Doc\\html\\index.hhp")
+            STRING(REGEX REPLACE "[/]" "\\\\" HHP_FILE ${TMP} )
+            # MESSAGE(SEND_ERROR "DBG  HHP_FILE=${HHP_FILE}")
+            ADD_CUSTOM_TARGET(winhelp ${HTML_HELP_COMPILER} ${HHP_FILE})
+            ADD_DEPENDENCIES (winhelp doc)
+
+            IF (NOT TARGET_DOC_SKIP_INSTALL)
+                # install windows help?
+                # determine useful name for output file
+                # should be project and version unique to allow installing
+                # multiple projects into one global directory
+                IF   (EXISTS "${PROJECT_BINARY_DIR}/Doc/html/index.chm")
+                    IF   (PROJECT_NAME)
+                        SET(OUT "${PROJECT_NAME}")
+                    ELSE (PROJECT_NAME)
+                        SET(OUT "Documentation") # default
+                    ENDIF(PROJECT_NAME)
+                    IF   (${PROJECT_NAME}_VERSION_MAJOR)
+                        SET(OUT "${OUT}-${${PROJECT_NAME}_VERSION_MAJOR}")
+                        IF   (${PROJECT_NAME}_VERSION_MINOR)
+                            SET(OUT  "${OUT}.${${PROJECT_NAME}_VERSION_MINOR}")
+                            IF   (${PROJECT_NAME}_VERSION_PATCH)
+                                SET(OUT "${OUT}.${${PROJECT_NAME}_VERSION_PATCH}")
+                            ENDIF(${PROJECT_NAME}_VERSION_PATCH)
+                        ENDIF(${PROJECT_NAME}_VERSION_MINOR)
+                    ENDIF(${PROJECT_NAME}_VERSION_MAJOR)
+                    # keep suffix
+                    SET(OUT  "${OUT}.chm")
+
+                    #MESSAGE("DBG ${PROJECT_BINARY_DIR}/Doc/html/index.chm \n${OUT}")
+                    # create target used by install and package commands
+                    INSTALL(FILES "${PROJECT_BINARY_DIR}/Doc/html/index.chm"
+                        DESTINATION ${INSTALL_DOCDIR} RENAME "${OUT}")
+                ENDIF(EXISTS "${PROJECT_BINARY_DIR}/Doc/html/index.chm")
+            ENDIF(NOT TARGET_DOC_SKIP_INSTALL)
+
+        ENDIF(HTML_HELP_COMPILER)
+        # MESSAGE(SEND_ERROR "HTML_HELP_COMPILER=${HTML_HELP_COMPILER}")
+    ENDIF (WIN32)
+ENDIF(DOXYGEN_FOUND)
+
+
+message (STATUS)
+message (STATUS "-------------------------------------------------------------------------------")
+message (STATUS "CMAKE_INSTALL_PREFIX " ${CMAKE_INSTALL_PREFIX} )
+message (STATUS "LIB_SUFFIX           " ${LIB_SUFFIX})
+message (STATUS "BUILD_STATIC         " ${BUILD_STATIC})
+message (STATUS "BUILD STDLIB         " ${BUILD_STDLIB})
+message (STATUS "BUILD_TESTING        " ${BUILD_TESTING})
+message (STATUS "-------------------------------------------------------------------------------")
+message (STATUS)
+message (STATUS "Change a value with: cmake -D<Variable>=<Value>")
+message (STATUS)
+
+if (BUILD_TESTING)
+    ENABLE_TESTING()
+    add_subdirectory(test)
+endif()
+
+if(NOT WIN32)
+    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${INSTALL_LIBDIR}/pkgconfig)
+    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ucommon-config DESTINATION ${INSTALL_BINDIR})
+    if(BUILD_STDLIB)
+        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/commoncpp-config DESTINATION ${INSTALL_BINDIR})
+        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/commoncpp.pc DESTINATION ${INSTALL_LIBDIR}/pkgconfig)
+    endif()
+endif(NOT WIN32)
+
+install(FILES ${ucommon_inc} ${secure_inc} DESTINATION ${INSTALL_INCLUDEDIR}/ucommon    COMPONENT headers)
+install(FILES ${commoncpp_inc} DESTINATION ${INSTALL_INCLUDEDIR}/commoncpp  COMPONENT headers)
+
+if(BUILD_STDLIB)
+    install(TARGETS commoncpp DESTINATION ${INSTALL_LIBDIR} COMPONENT libraries)
+endif()
+
+install(TARGETS ucommon usecure DESTINATION ${INSTALL_LIBDIR} COMPONENT libraries)
+install(TARGETS ucommon-args ucommon-pdetach usecure-car usecure-scrub usecure-mdsum ucommon-sockaddr usecure-zerofill DESTINATION ${INSTALL_BINDIR})
+install(FILES ${ucommon_man} DESTINATION ${INSTALL_MANDIR}/man1)
+
+if(CMAKE_GENERATOR MATCHES "Unix Makefiles")
+    add_custom_target(uninstall
+        WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+        COMMAND xargs <install_manifest.txt
+    )
+endif()