From 4776394c1d8038dcbdb176663cb6884ecb312e38 Mon Sep 17 00:00:00 2001
From: Andrea Michelotti <andrea.michelotti@lnf.infn.it>
Date: Wed, 27 Jul 2016 15:37:48 +0200
Subject: [PATCH] all based on cmakefiles

---
 CMakeLists.txt                      | 176 +++--------
 ChaosDataService/CMakeLists.txt     |  15 +-
 ChaosMetadataService/CMakeLists.txt |   7 +-
 bootstrap.sh                        | 108 +++----
 chaos/common/CMakeLists.txt         |   9 +-
 chaos/cu_toolkit/CMakeLists.txt     |  13 +-
 chaos/ui_toolkit/CMakeLists.txt     |  13 +-
 config/CMakeChaos.txt               | 433 ++++++++++++++++++++++++++++
 8 files changed, 561 insertions(+), 213 deletions(-)
 create mode 100644 config/CMakeChaos.txt

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 71cdeb2ad..2ef7b1be9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,183 +1,95 @@
 cmake_minimum_required(VERSION 2.6)
+project (chaos)
+include(config/CMakeChaos.txt)
 option(CHAOS_MEMCACHE_TEST "Memcached test" OFF)
 option(CHAOS_ARCHITECTURE_TEST "Architecture tests" ON)
+option(CHAOS_CDS "Chaos Data Service" ON)
+option(CHAOS_MDS "Chaos MetaData Service" ON)
+option(CHAOS_WAN "Chaos Wan Service" ON)
+option(CHAOS_DATA_EXPORT "Chaos Data Export" ON)
+option(CHAOS_EXAMPLES "Chaos Examples" ON)
 
-SET(GITSOURCE https://github.com/amichelotti)
-
-macro (GitClone arg)
-  message(STATUS "[${arg}] Cloning into ${CMAKE_CURRENT_SOURCE_DIR}/external")
-  file(REMOVE_RECURSE  ${CMAKE_CURRENT_SOURCE_DIR}/external)
-  file(MAKE_DIRECTORY  ${CMAKE_CURRENT_SOURCE_DIR}/external)
-  execute_process(
-    COMMAND git clone ${GITSOURCE}/${arg}.git
-    WORKING_DIRECTORY  ${CMAKE_CURRENT_SOURCE_DIR}/external
-    RESULT_VARIABLE err
-    OUTPUT_VARIABLE mod
-    )
-  if( err)
-    message(FATAL_ERROR "[${arg}] cloning  error: ${err}")
-  endif()
-endmacro()
-
-macro (GitCheckout arg arg1)
-  message(STATUS "[${arg}] Checkout branch ${arg1}")
-
-  execute_process(
-    COMMAND git checkout ${arg1}
-    WORKING_DIRECTORY  ${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}
-    RESULT_VARIABLE err
-    OUTPUT_VARIABLE out)
-  if( err)
-    message(FATAL_ERROR "[${arg}] checkout  error: ${err}")
-  endif()
-endmacro()
-
-macro (ConfigureAndBuild arg arg1)
-  IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}/CMakeLists.txt")
-    SET(CONFPARM cmake ${arg1} ${CMAKE_CHAOS} .)
-  ELSE()
-    IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}/autogen.sh")
-      message(STATUS "[${arg}] generation of configuration")
-      execute_process(
-	COMMAND ./autogen.sh
-	WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}
-	RESULT_VARIABLE err
-	OUTPUT_VARIABLE mod
-	)
-
-      IF( err)
-	message(FATAL_ERROR "[${arg}] performing generation of configuration: ${err}")
-      ENDIF()
-    ENDIF()
-    SET(CONFPARM ./configure --prefix=${CMAKE_INSTALL_PREFIX} ${arg1} ${CROSS_HOST})
-  ENDIF()
-   #  SET(CONFPARM ./configure ${CROSS_HOST} ${arg1} --prefix=${CMAKE_INSTALL_PREFIX})
-
-   separate_arguments(CONFPARM)
-   message(STATUS "[${arg}] configuring with \"${CONFPARM}\"")
-
-  execute_process(
-    COMMAND ${CONFPARM}
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}
-    RESULT_VARIABLE err
-    OUTPUT_VARIABLE out
-    )
-
-  if( err)
-    message(FATAL_ERROR "[${arg}] configuring ${arg} :${err}")
-  endif()
-
-  message(STATUS "[${arg}] compiling (${PROCESSOR_COUNT})")
-  execute_process(
-    COMMAND make install -j ${PROCESSOR_COUNT}
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}
-    RESULT_VARIABLE err2
-    OUTPUT_VARIABLE out2
-    )
-
-  if( err2)
-    message(FATAL_ERROR "[${arg}] compiling ${out2}: ${err2}")
-  endif()
-
-
-endmacro()
-
-
-IF (DEFINED ENV{CHAOS_BUNDLE} )
-  include($ENV{CHAOS_BUNDLE}/tools/project_template/CMakeChaos.txt)
-ELSE()
-
-EXECUTE_PROCESS(COMMAND uname -s OUTPUT_VARIABLE SYSTEM_NAME)
-MESSAGE(STATUS " System : ${SYSTEM_NAME}")
-IF(${SYSTEM_NAME} MATCHES "Darwin")
-   # Mac OS X specific code
-   MESSAGE(STATUS " enabling MAC compilation")
-  SET(FrameworkLib boost_program_options boost_date_time boost_system  boost_chrono boost_regex boost_log_setup boost_log boost_filesystem boost_thread boost_atomic zmq.a jsoncpp pthread dl)
-ELSE()
-  SET(FrameworkLib boost_program_options boost_date_time boost_system  boost_chrono boost_regex boost_log_setup boost_log boost_filesystem boost_thread boost_atomic zmq.a jsoncpp pthread rt dl)
 
-ENDIF()
-ENDIF()
-project (chaos)
 
 SET( ${PROJECT_NAME}_MAJOR_VERSION 0 )
 SET( ${PROJECT_NAME}_MINOR_VERSION 1 )
 SET( ${PROJECT_NAME}_PATCH_LEVEL 0 )
 
 
-add_definitions(-DDEBUG )
-SET(CMAKE_EXE_LINKER_FLAGS "-static-libstdc++")
+
 
 EXECUTE_PROCESS(COMMAND chaos/common/version.sh)
 
-ADD_DEFINITIONS(-O3 )
 INCLUDE_DIRECTORIES(. ../ ../../ ${CMAKE_INSTALL_PREFIX}/include)
 LINK_DIRECTORIES(${CMAKE_INSTALL_PREFIX}/lib)
-IF(NOT BUILD_PREFIX)
-set (BUILD_PREFIX usr/local)
-ENDIF()
-
-message(STATUS "Using ${BUILD_PREFIX} as installation directory")
 
 SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
 
-message(STATUS "Configure Common Layer")
+MESG("Configure Common Layer")
 ADD_SUBDIRECTORY(chaos/common)
 
-message(STATUS "Configure CUToolkit Layer")
+MESG("Configure CUToolkit Layer")
 ADD_SUBDIRECTORY(chaos/cu_toolkit)
 
-message(STATUS "Configure UIToolkit Layer")
+MESG("Configure UIToolkit Layer")
 ADD_SUBDIRECTORY(chaos/ui_toolkit)
 
-IF (NOT CHAOS_NO_MONGO)
-message(STATUS "Configure Chaos Metadata Service")
-ADD_SUBDIRECTORY(ChaosMetadataService)
+IF (CHAOS_MDS)
+  MESG("Configure Chaos Metadata Service")
+  ADD_SUBDIRECTORY(ChaosMetadataService)
 ENDIF()
 
-message(STATUS "Configure Chaos Metadata Service Client Library")
+MESG("Configure Chaos Metadata Service Client Library")
 ADD_SUBDIRECTORY(ChaosMetadataServiceClient)
 
-message(STATUS "Configure Chaos Metadata Service Client Library Test Application")
+MESG("Configure Chaos Metadata Service Client Library Test Application")
 ADD_SUBDIRECTORY(ChaosMetadataServiceClientTest)
 
-message(STATUS "Configure Chaos WAN Proxy")
-ADD_SUBDIRECTORY(ChaosWANProxy)
-
-IF (NOT CHAOS_NO_MONGO)
-message(STATUS "Configure Chaos Data Service")
-ADD_SUBDIRECTORY(ChaosDataService)
+IF (CHAOS_WAN)
+  MESG("Configure Chaos WAN Proxy")
+  ADD_SUBDIRECTORY(ChaosWANProxy)
 ENDIF()
 
-message(STATUS "Configure Chaos Data Export")
-ADD_SUBDIRECTORY(ChaosDataExport)
+IF (CHAOS_CDS)
+  MESG("Configure Chaos Data Service")
+  ADD_SUBDIRECTORY(ChaosDataService)
+ENDIF()
 
-message(STATUS "Configure Chaos CLI")
-ADD_SUBDIRECTORY(example/ChaosCLI)
+IF (CHAOS_DATA_EXPORT)
+  MESG("Configure Chaos Data Export ")
+  ADD_SUBDIRECTORY(ChaosDataExport)
+ENDIF()
 
-message(STATUS "Configure Chaos ChaosMDSCmd")
-ADD_SUBDIRECTORY(example/ChaosMDSCmd)
+IF(CHAOS_EXAMPLES)
+  MESG("Configure Chaos CLI")
+  ADD_SUBDIRECTORY(example/ChaosCLI)
 
-message(STATUS "Configure Chaos Performance Tester")
-ADD_SUBDIRECTORY(example/ChaosPerformanceTester)
+  MESG("Configure Chaos ChaosMDSCmd")
+  ADD_SUBDIRECTORY(example/ChaosMDSCmd)
 
-#message(STATUS "Configure Control Unit Test examples")
+  MESG("Configure Chaos Performance Tester")
+  ADD_SUBDIRECTORY(example/ChaosPerformanceTester)
+#MESG("Configure Control Unit Test examples")
 #ADD_SUBDIRECTORY(example/ControlUnitTest bin/bin_example_cutest)
 
-#message(STATUS "Configure BenchTest simulation excutable")
+#MESG("Configure BenchTest simulation excutable")
 #ADD_SUBDIRECTORY(example/BenchTest bin/bench_test)
+
+ENDIF()
+
 IF (CHAOS_MEMCACHE_TEST)
-  message(STATUS "Configure ChaosMemCacheTest test excutable")
+  MESG("Configure ChaosMemCacheTest test excutable")
   ADD_SUBDIRECTORY(test/MemcachedEmbeddedTest)
 ENDIF()
 
 IF (CHAOS_ARCHITECTURE_TEST)
-  message(STATUS "Configure ChaosArchitectureTests test excutable")
+  MESG("Configure ChaosArchitectureTests test excutable")
   ADD_SUBDIRECTORY(ArchitectureTests)
 ENDIF()
 
-# message(STATUS "Configure Chaos Snapshot Utility")
+MESG("Done")
+# MESG("Configure Chaos Snapshot Utility")
 # ADD_SUBDIRECTORY(ChaosSnapshotUtility/ChaosSnapshotUtility bin/chaos_snap_util)
 
-#message(STATUS "Configure Plugin Test")
+#MESG("Configure Plugin Test")
 #ADD_SUBDIRECTORY(test/PluginTest bin/plugin_test)
diff --git a/ChaosDataService/CMakeLists.txt b/ChaosDataService/CMakeLists.txt
index 5c791d1d7..8b7b130d8 100644
--- a/ChaosDataService/CMakeLists.txt
+++ b/ChaosDataService/CMakeLists.txt
@@ -1,7 +1,5 @@
 cmake_minimum_required(VERSION 2.6)
-IF (DEFINED ENV{CHAOS_BUNDLE} )
-  include($ENV{CHAOS_BUNDLE}/tools/project_template/CMakeChaos.txt)
-ENDIF()
+project(ChaosDataService)
 
 SET(src main.cpp)
 
@@ -49,14 +47,15 @@ SET(src  ${src} vfs/VFSManager.cpp
 SET(src  ${src} vfs/query/DataBlockCache.cpp
                 vfs/query/DataBlockFetcher.cpp)
 
-ADD_EXECUTABLE(ChaosDataService ${src})
-find_library(couchbaseS LIB_NEED PATHS ${PROJECT_SOURCE_DIR}/usr/local/lib ${CMAKE_INSTALL_PREFIX}/lib /usr/lib DOC "libcouchbase library")
+ADD_EXECUTABLE(${PROJECT_NAME} ${src})
+
+find_library(LIB_NEED couchbaseS)
 
 if(NOT LIB_NEED)
+  MESG("library not found downloading...")
   GitClone(libcouchbase)
   GitCheckout(libcouchbase chaos-0.1)
   ConfigureAndBuild(libcouchbase  "-DLCB_NO_SSL=true -DLCB_NO_TESTS=true -DLCB_NO_TOOLS=true -DLCB_NO_PLUGINS=true")
-
 endif()
 
 
@@ -64,5 +63,5 @@ IF(BUILD_FORCE_STATIC)
   SET(CMAKE_EXE_LINKER_FLAGS "-static -Wl,--whole-archive -lchaos_common -Wl,--no-whole-archive")
 ENDIF()
 
-TARGET_LINK_LIBRARIES(ChaosDataService mongoclient couchbaseS chaos_common ${FrameworkLib})
-INSTALL_TARGETS(/bin ChaosDataService)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} mongoclient couchbaseS chaos_common ${FrameworkLib})
+INSTALL_TARGETS(/bin ${PROJECT_NAME})
diff --git a/ChaosMetadataService/CMakeLists.txt b/ChaosMetadataService/CMakeLists.txt
index a4e782593..a57df1d48 100644
--- a/ChaosMetadataService/CMakeLists.txt
+++ b/ChaosMetadataService/CMakeLists.txt
@@ -1,4 +1,5 @@
 cmake_minimum_required(VERSION 2.6)
+project(ChaosMetadataService)
 IF (DEFINED ENV{CHAOS_BUNDLE} )
   include($ENV{CHAOS_BUNDLE}/tools/project_template/CMakeChaos.txt)
 ENDIF()
@@ -139,10 +140,10 @@ SET(cnd_src  ${cnd_src}	batch/script/LoadInstanceOnUnitServer.cpp)
 
 SET(cnd_src  ${cnd_src}	batch/general/RestoreSnapshotBatch.cpp)
 
-ADD_EXECUTABLE(ChaosMetadataService ${cnd_src})
+ADD_EXECUTABLE(${PROJECT_NAME} ${cnd_src})
 
 IF(BUILD_FORCE_STATIC)
   SET(CMAKE_EXE_LINKER_FLAGS "-static -Wl,--whole-archive -lchaos_common -Wl,--no-whole-archive")
 ENDIF()
-TARGET_LINK_LIBRARIES(ChaosMetadataService chaos_common mongoclient ${FrameworkLib})
-INSTALL_TARGETS(/bin ChaosMetadataService)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} chaos_common mongoclient ${FrameworkLib})
+INSTALL_TARGETS(/bin ${PROJECT_NAME})
diff --git a/bootstrap.sh b/bootstrap.sh
index 8a9f4f9f9..fea068d1c 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -622,70 +622,70 @@ if [ ! -f "$PREFIX/include/zlib.h" ] || [ ! -f "$PREFIX/lib/libz.a" ]; then
 fi
 
 
-if [ ! -d "$PREFIX/include/boost" ]; then
-    echo "* need boost"
-    if [ ! -e "$BASE_EXTERNAL/boost_$BOOST_VERSION.tar.gz" ]; then
-        echo "Download boost $BOOST_VERSION source"
-        if !( wget --no-check-certificate -O $BASE_EXTERNAL/boost_$BOOST_VERSION.tar.gz "http://download.sourceforge.net/project/boost/boost/$BOOST_VERSION_IN_PATH/boost_$BOOST_VERSION.tar.gz" ); then
-	    echo "## cannot download boost_$BOOST_VERSION.tar.gz"
-	    exit 1
-	fi
+# if [ ! -d "$PREFIX/include/boost" ]; then
+#     echo "* need boost"
+#     if [ ! -e "$BASE_EXTERNAL/boost_$BOOST_VERSION.tar.gz" ]; then
+#         echo "Download boost $BOOST_VERSION source"
+#         if !( wget --no-check-certificate -O $BASE_EXTERNAL/boost_$BOOST_VERSION.tar.gz "http://download.sourceforge.net/project/boost/boost/$BOOST_VERSION_IN_PATH/boost_$BOOST_VERSION.tar.gz" ); then
+# 	    echo "## cannot download boost_$BOOST_VERSION.tar.gz"
+# 	    exit 1
+# 	fi
 
-    fi
+#     fi
 
-    if [ ! -e $BASE_EXTERNAL/boost ]; then
-        tar zxvf $BASE_EXTERNAL/boost_$BOOST_VERSION.tar.gz -C $BASE_EXTERNAL
-        mv $BASE_EXTERNAL/boost_$BOOST_VERSION $BASE_EXTERNAL/boost
-	if [ -e $CHAOS_BUNDLE/tools/patches/boost-1.55.0-atomic-check_lock_free_flag.patch ];then
-	    cp $CHAOS_BUNDLE/tools/patches/boost-1.55.0-atomic-check_lock_free_flag.patch $BASE_EXTERNAL/boost
-	fi
+#     if [ ! -e $BASE_EXTERNAL/boost ]; then
+#         tar zxvf $BASE_EXTERNAL/boost_$BOOST_VERSION.tar.gz -C $BASE_EXTERNAL
+#         mv $BASE_EXTERNAL/boost_$BOOST_VERSION $BASE_EXTERNAL/boost
+# 	if [ -e $CHAOS_BUNDLE/tools/patches/boost-1.55.0-atomic-check_lock_free_flag.patch ];then
+# 	    cp $CHAOS_BUNDLE/tools/patches/boost-1.55.0-atomic-check_lock_free_flag.patch $BASE_EXTERNAL/boost
+# 	fi
 
-    fi
+#     fi
 
-    #install old version of boost log
-    if [ $BOOST_NUMBER_VERSION -le 1530 ] && [ ! -d "$BASE_EXTERNAL/boost_log" ]; then
-        if !(git clone https://cvs.lnf.infn.it/boost_log $BASE_EXTERNAL/boost_log); then
-            echo "## cannot git clone  https://cvs.lnf.infn.it/boost_log"
-            exit 1
-        fi
-
-        if [ ! -d "$BASE_EXTERNAL/boost/boost/log" ]; then
-            echo "link $BASE_EXTERNAL/boost/boost/log -> $BASE_EXTERNAL/boost_log/boost/log"
-            ln -s $BASE_EXTERNAL/boost_log/boost/log $BASE_EXTERNAL/boost/boost/log
-        fi
-
-        if [ ! -d "$BASE_EXTERNAL/boost/libs/log" ]; then
-            echo "link $BASE_EXTERNAL/boost/libs/log -> $BASE_EXTERNAL/boost_log/libs/log"
-            ln -s $BASE_EXTERNAL/boost_log/libs/log $BASE_EXTERNAL/boost/libs/log
-        fi
-    fi
+#     #install old version of boost log
+#     if [ $BOOST_NUMBER_VERSION -le 1530 ] && [ ! -d "$BASE_EXTERNAL/boost_log" ]; then
+#         if !(git clone https://cvs.lnf.infn.it/boost_log $BASE_EXTERNAL/boost_log); then
+#             echo "## cannot git clone  https://cvs.lnf.infn.it/boost_log"
+#             exit 1
+#         fi
 
+#         if [ ! -d "$BASE_EXTERNAL/boost/boost/log" ]; then
+#             echo "link $BASE_EXTERNAL/boost/boost/log -> $BASE_EXTERNAL/boost_log/boost/log"
+#             ln -s $BASE_EXTERNAL/boost_log/boost/log $BASE_EXTERNAL/boost/boost/log
+#         fi
 
-    echo "Boostrapping boost"
-    cd $BASE_EXTERNAL/boost
-    if [ -e boost-1.55.0-atomic-check_lock_free_flag.patch ];then
-	patch -p1 < boost-1.55.0-atomic-check_lock_free_flag.patch >& /dev/null
-    fi
-    if !( ./bootstrap.sh ); then
-	echo "## cannot bootstrap boost"
-	exit 1;
-    fi
+#         if [ ! -d "$BASE_EXTERNAL/boost/libs/log" ]; then
+#             echo "link $BASE_EXTERNAL/boost/libs/log -> $BASE_EXTERNAL/boost_log/libs/log"
+#             ln -s $BASE_EXTERNAL/boost_log/libs/log $BASE_EXTERNAL/boost/libs/log
+#         fi
+#     fi
 
-    if [ -n "$CHAOS_CROSS_HOST" ]; then
-	echo "* Patching project-config.jam to cross compile for $CHAOS_CROSS_HOST"
-	sed -i .bak -e "s/using gcc/using gcc : arm : $CXX/" project-config.jam
-    fi
 
+#     echo "Boostrapping boost"
+#     cd $BASE_EXTERNAL/boost
+#     if [ -e boost-1.55.0-atomic-check_lock_free_flag.patch ];then
+# 	patch -p1 < boost-1.55.0-atomic-check_lock_free_flag.patch >& /dev/null
+#     fi
+#     if !( ./bootstrap.sh ); then
+# 	echo "## cannot bootstrap boost"
+# 	exit 1;
+#     fi
 
-    cd $BASE_EXTERNAL/boost
-    echo "Compile and install boost libraries into $PREFIX/"
-    ./b2 --clean
-    echo "using zlib : $ZLIB_VERSION : $CHAOS_PREFIX ;" > user-config.jam
-    ./b2 $CHAOS_BOOST_FLAGS -j $NPROC
+#     if [ -n "$CHAOS_CROSS_HOST" ]; then
+# 	echo "* Patching project-config.jam to cross compile for $CHAOS_CROSS_HOST"
+# 	sed -i .bak -e "s/using gcc/using gcc : arm : $CXX/" project-config.jam
+#     fi
 
-else
-    echo "Boost Already present"
-fi
+
+#     cd $BASE_EXTERNAL/boost
+#     echo "Compile and install boost libraries into $PREFIX/"
+#     ./b2 --clean
+#     echo "using zlib : $ZLIB_VERSION : $CHAOS_PREFIX ;" > user-config.jam
+#     ./b2 $CHAOS_BOOST_FLAGS -j $NPROC
+
+# else
+#     echo "Boost Already present"
+# fi
 
 # #install lua language
 # if [ ! -f "$PREFIX/include/lua.h" ]; then
diff --git a/chaos/common/CMakeLists.txt b/chaos/common/CMakeLists.txt
index c210c6ef1..4a5d9a730 100644
--- a/chaos/common/CMakeLists.txt
+++ b/chaos/common/CMakeLists.txt
@@ -1,3 +1,4 @@
+project(chaos_common)
 SET(common_lib_src chaos_errors.cpp
                    log/LogManager.cpp)
 
@@ -226,15 +227,15 @@ ENDIF ()
 # separate_arguments(common_lib_library)
 
 IF (BUILD_FORCE_STATIC)
-    ADD_LIBRARY(chaos_common STATIC ${common_lib_src})
+    ADD_LIBRARY(${PROJECT_NAME} STATIC ${common_lib_src})
 ELSE ()
-    ADD_LIBRARY(chaos_common SHARED ${common_lib_src})
+    ADD_LIBRARY(${PROJECT_NAME} SHARED ${common_lib_src})
 ENDIF ()
 
 #SET_TARGET_PROPERTIES(chaos_common_static PROPERTIES OUTPUT_NAME chaos_common)
 
 #set_target_properties(chaos_common PROPERTIES VERSION 1.0.0 SOVERSION 1)
-TARGET_LINK_LIBRARIES(chaos_common mongoose ${FrameworkLib})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} mongoose ${FrameworkLib})
 
 
 FILE(GLOB files "*.h")
@@ -346,7 +347,7 @@ INSTALL(FILES ${files} DESTINATION include/chaos/common/script/lua)
 FILE(GLOB files "script/lua/core/*.h")
 INSTALL(FILES ${files} DESTINATION include/chaos/common/script/lua/core)
 
-INSTALL(TARGETS chaos_common
+INSTALL(TARGETS ${PROJECT_NAME}
         DESTINATION "lib"
         PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
 
diff --git a/chaos/cu_toolkit/CMakeLists.txt b/chaos/cu_toolkit/CMakeLists.txt
index f9dc7db59..f3abd9bc0 100644
--- a/chaos/cu_toolkit/CMakeLists.txt
+++ b/chaos/cu_toolkit/CMakeLists.txt
@@ -1,3 +1,4 @@
+project(chaos_cutoolkit)
 INCLUDE_DIRECTORIES(chaos/cu_toolkit ../../)
 SET(cu_lib_src
     ChaosCUToolkit.cpp
@@ -39,17 +40,17 @@ SET(cu_lib_src  ${cu_lib_src}
     control_manager/execution_pool/ExecutionPool.cpp)
 
 IF(BUILD_FORCE_STATIC)
-ADD_LIBRARY(chaos_cutoolkit STATIC ${cu_lib_src})
+ADD_LIBRARY(${PROJECT_NAME} STATIC ${cu_lib_src})
 ELSE()
-ADD_LIBRARY(chaos_cutoolkit SHARED ${cu_lib_src})
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${cu_lib_src})
 ENDIF()
 
-#SET_TARGET_PROPERTIES(chaos_cutoolkit_static PROPERTIES OUTPUT_NAME chaos_cutoolkit)
-#set_target_properties(chaos_cutoolkit PROPERTIES VERSION 1.0.0 SOVERSION 1) 
+#SET_TARGET_PROPERTIES(${PROJECT_NAME}_static PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
+#set_target_properties(${PROJECT_NAME} PROPERTIES VERSION 1.0.0 SOVERSION 1) 
 
 SET(chaos_cutoolkit_lib $ENV{CHAOS_LINK_LIBRARY})
 separate_arguments(chaos_cutoolkit_lib)
-TARGET_LINK_LIBRARIES(chaos_cutoolkit  chaos_common ${chaos_cutoolkit_lib})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME}  chaos_common ${chaos_cutoolkit_lib})
 
 FILE(GLOB files "*.h")
 INSTALL(FILES ${files} DESTINATION include/chaos/cu_toolkit)
@@ -82,6 +83,6 @@ INSTALL(FILES ${files} DESTINATION include/chaos/cu_toolkit/control_manager/exec
 FILE(GLOB files "data_manager/*.h")
 INSTALL(FILES ${files} DESTINATION include/chaos/cu_toolkit/data_manager)
 
-INSTALL(TARGETS chaos_cutoolkit
+INSTALL(TARGETS ${PROJECT_NAME}
         DESTINATION "lib"
         PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
diff --git a/chaos/ui_toolkit/CMakeLists.txt b/chaos/ui_toolkit/CMakeLists.txt
index 4a1cf8f72..650fecc1d 100644
--- a/chaos/ui_toolkit/CMakeLists.txt
+++ b/chaos/ui_toolkit/CMakeLists.txt
@@ -1,19 +1,20 @@
+project(chaos_uitoolkit)
 INCLUDE_DIRECTORIES(chaos/ui_toolkit ../../)
 SET(ui_lib_src ChaosUIToolkit.cpp ChaosUIToolkitCWrapper.cc
 				HighLevelApi/DeviceController.cpp HighLevelApi/HLDataApi.cpp
 				HighLevelApi/HLInfrastructureApi.cpp LowLevelApi/LLDataApi.cpp LowLevelApi/LLRpcApi.cpp)
 
 IF(BUILD_FORCE_STATIC)
-ADD_LIBRARY(chaos_uitoolkit STATIC ${ui_lib_src})
+ADD_LIBRARY(${PROJECT_NAME} STATIC ${ui_lib_src})
 ELSE()
-ADD_LIBRARY(chaos_uitoolkit SHARED ${ui_lib_src})
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${ui_lib_src})
 ENDIF()
-#set_target_properties(chaos_uitoolkit_static PROPERTIES output_name chaos_uitoolkit) 
+#set_target_properties(${PROJECT_NAME}_static PROPERTIES output_name chaos_uitoolkit) 
 
 
 SET(chaos_uitoolkit_lib $ENV{CHAOS_LINK_LIBRARY})
 separate_arguments(chaos_uitoolkit_lib)
-TARGET_LINK_LIBRARIES(chaos_uitoolkit  chaos_common ${chaos_uitoolkit_lib})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME}  chaos_common ${chaos_uitoolkit_lib})
 
 
 
@@ -29,9 +30,9 @@ INSTALL(FILES ${files} DESTINATION include/chaos/ui_toolkit/HighLevelApi)
 FILE(GLOB files "LowLevelApi/*.h")
 INSTALL(FILES ${files} DESTINATION include/chaos/ui_toolkit/LowLevelApi)
 
-INSTALL(TARGETS chaos_uitoolkit
+INSTALL(TARGETS ${PROJECT_NAME}
         DESTINATION "lib"
         PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
-# INSTALL(TARGETS chaos_uitoolkit_static
+# INSTALL(TARGETS ${PROJECT_NAME}_static
 #         DESTINATION "lib"
 #         PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
\ No newline at end of file
diff --git a/config/CMakeChaos.txt b/config/CMakeChaos.txt
new file mode 100644
index 000000000..6a88b94e0
--- /dev/null
+++ b/config/CMakeChaos.txt
@@ -0,0 +1,433 @@
+cmake_policy(VERSION 2.8)
+cmake_minimum_required(VERSION 2.8)
+cmake_policy(SET CMP0011 NEW)
+
+### MACRO 
+macro (MESG parm)
+  MESSAGE(STATUS "[${PROJECT_NAME}] ${parm}")
+endmacro()
+
+macro (ERROR parm)
+  MESSAGE(FATAL "[${PROJECT_NAME}] ${parm}")
+endmacro()
+
+macro (GitCloneUrl arg arg1)
+  MESG("Cloning ${arg} from ${arg1} into ${CMAKE_CURRENT_SOURCE_DIR}/external")
+  file(REMOVE_RECURSE  ${CMAKE_CURRENT_SOURCE_DIR}/external/${arg})
+  file(MAKE_DIRECTORY  ${CMAKE_CURRENT_SOURCE_DIR}/external/${arg})
+  execute_process( 
+    COMMAND git clone ${arg1}/${arg}.git 
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/external
+    RESULT_VARIABLE err
+    OUTPUT_VARIABLE out
+    )
+  if( err)
+    ERROR("cloning  from ${arg1} error: ${out}")
+  endif()
+endmacro()
+
+macro (GitClone arg)
+  GitCloneUrl(${arg} ${GITSOURCE})
+endmacro()
+
+macro (wget what url)
+  file(MAKE_DIRECTORY  ${CMAKE_CURRENT_SOURCE_DIR}/external/)
+  IF(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/external/${what}")
+    MESG("wget ${url}/${what} in ${CMAKE_CURRENT_SOURCE_DIR}/external/${what}")
+    execute_process( 
+      COMMAND wget ${url}/${what} --no-check-certificate -O ${what}
+      WORKING_DIRECTORY  ${CMAKE_CURRENT_SOURCE_DIR}/external
+      RESULT_VARIABLE err
+      OUTPUT_VARIABLE out)
+    if( err)
+      ERROR("wget failed  error: ${out}")
+    endif()
+  else()
+    MESG("already downloaded ${what}")
+  endif()
+endmacro()
+
+macro (tar opt what)
+  MESG("tar ${opt} ${what}")
+  execute_process( 
+    COMMAND tar ${opt} ${what}
+    WORKING_DIRECTORY  ${CMAKE_CURRENT_SOURCE_DIR}/external
+    RESULT_VARIABLE err
+    OUTPUT_VARIABLE out)
+  if( err)
+    ERROR("tar ${opt} failed  error: ${out}")
+  endif()
+endmacro()
+
+
+macro (GitCheckout arg arg1)
+  MESG("Checkout branch ${arg1}")
+  execute_process( 
+    COMMAND git checkout ${arg1}
+    WORKING_DIRECTORY  ${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}
+    RESULT_VARIABLE err
+    OUTPUT_VARIABLE out)
+  if( err)
+    ERROR("checkout  error: ${out}")
+  endif()
+endmacro()
+
+macro (ConfigureAndBuild arg arg1)
+  IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}/b2")
+    MESG("b2 configuration/build tool ${arg} ${arg1}")
+    execute_process(
+      COMMAND ./b2 --clean
+      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}
+      RESULT_VARIABLE err
+      OUTPUT_VARIABLE out
+      )
+    IF (err) 
+      ERROR("cleaning b2: ${out}")
+    ENDIF()
+    
+    SET(CONFPARM ./b2 "${arg1}")
+    unset(SKIPBUILD CACHE)
+    SET(SKIPBUILD ON)
+  ELSE()
+    IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}/CMakeLists.txt")
+      MESG("cmake configuration tool")
+      SET(CONFPARM cmake ${arg1} ${CMAKE_CHAOS} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} .)
+    ELSE()
+      IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}/autogen.sh")
+	MESG("generation of configuration")
+	execute_process( 
+	  COMMAND ./autogen.sh
+	  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}
+	  RESULT_VARIABLE err
+	  OUTPUT_VARIABLE mod
+	  )
+	
+	IF( err)
+	  ERROR("performing generation of configuration: ${err}")
+	ENDIF()
+      ELSE()
+	IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}/configure")
+	  SET(CONFPARM ./configure --prefix=${CMAKE_INSTALL_PREFIX} ${arg1} ${CROSS_HOST})
+	ENDIF()
+      ENDIF()
+    ENDIF()
+  ENDIF()
+  
+  MESG("configuring with \"${CONFPARM}\"")
+#  separate_arguments(CONFPARM)
+  MESG("configuring separated with \"${CONFPARM}\"")
+    
+  execute_process( 
+    COMMAND ${CONFPARM}
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}
+    RESULT_VARIABLE err
+    OUTPUT_VARIABLE out
+    )
+  
+  if( err)
+    ERROR("configuring ${arg} :${err}")
+  endif()
+    
+  IF(NOT SKIPBUILD)
+    message(STATUS "[${arg}] compiling (${PROCESSOR_COUNT})")
+    execute_process( 
+      COMMAND make install -j ${PROCESSOR_COUNT}
+      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/external/${arg}
+      RESULT_VARIABLE err2
+      OUTPUT_VARIABLE out2
+      )
+    
+    if( err2)
+      ERROR("compiling ${out2}: ${err2}")
+    endif()
+  ENDIF()
+
+
+endmacro()
+
+
+macro (BoostInstall ver url arg)
+
+  wget(boost_1_${ver}_0.tar.gz  https://sourceforge.net/projects/boost/files/boost/1.${ver}.0)
+  tar(xf boost_1_${ver}_0.tar.gz)
+  execute_process(
+    COMMAND ./bootstrap.sh
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/external/boost_1_${ver}_0
+    RESULT_VARIABLE err
+    OUTPUT_VARIABLE out
+    )
+  if( err)
+    ERROR("bootstrapping boost  failed  error: ${out}")
+  endif()
+  ConfigureAndBuild(boost_1_${ver}_0 ${arg})
+endmacro()
+
+macro (CheckConfigureBuild lib conf url)
+unset(LIB_NEED CACHE)
+find_library(LIB_NEED NAMES ${lib} )
+
+if(NOT LIB_NEED)
+  MESG("${lib} library not found downloading...")
+  GitCloneUrl(${lib} ${url})
+  ConfigureAndBuild(${lib}  ${conf})
+else()
+  MESG("${lib} library found ${LIB_NEED} !")
+
+endif()
+
+endmacro()
+##########
+
+### options and configuration variables ####
+
+SET(GITSOURCE https://github.com/amichelotti)
+
+SET (CHAOS_FRAMEWORK ${CMAKE_CURRENT_LIST_DIR}/..)
+set (CMAKE_C_FLAGS "-fPIC")
+set (CMAKE_CXX_FLAGS "-fPIC")
+
+option(CHAOS_FORCE32 "Set to ON to enable 32 bit compilation" OFF)
+option(CHAOS_STATIC "Set static compilation" OFF)
+option(CHAOS_DEBUG "Enable Debug" ON)
+
+EXECUTE_PROCESS(COMMAND uname -s OUTPUT_VARIABLE CHAOS_SYSTEM_NAME)
+
+IF(${SYSTEM_NAME} MATCHES "Darwin")
+  # Mac OS X specific code
+  MESG("enabling MAC compilation")
+  SET(FrameworkLib boost_program_options boost_date_time boost_system  boost_chrono boost_regex boost_log_setup boost_log boost_filesystem boost_thread boost_atomic zmq.a jsoncpp pthread dl)
+  SET(CHAOS_BOOST_FLAGS "toolset=clang cxxflags=-stdlib=libstdc++ linkflags=-stdlib=libstdc++ link=static runtime-link=shared variant=release")
+  SET(CMAKE_CXXFLAGS "-stdlib=libstdc++")
+  SET(CMAKE_CFLAGS="-stdlib=libstdc++")
+ELSE()
+  SET(FrameworkLib boost_program_options boost_date_time boost_system  boost_chrono boost_regex boost_log_setup boost_log boost_filesystem boost_thread boost_atomic zmq.a jsoncpp pthread rt dl)
+
+ENDIF()
+
+IF ( DEFINED ENV{CHAOS_PREFIX} )
+  IF ( NOT ${CMAKE_INSTALL_PREFIX} MATCHES $ENV{CHAOS_PREFIX})
+    set(CMAKE_INSTALL_PREFIX $ENV{CHAOS_PREFIX})
+    MESG("Setting Install Dir to CHAOS_PREFIX ${CMAKE_INSTALL_PREFIX}")
+  ENDIF()
+ENDIF()
+
+IF ( NOT DEFINED CMAKE_INSTALL_PREFIX )
+  set(CMAKE_INSTALL_PREFIX ${CHAOS_FRAMEWORK}/usr/local)
+  MESG("Setting Install Dir ${CMAKE_INSTALL_PREFIX}")
+ENDIF()
+
+IF (DEFINED ENV{CHAOS_TARGET} AND NOT CHAOS_TARGET)
+  SET(CHAOS_TARGET $ENV{CHAOS_TARGET})
+ENDIF()
+
+
+IF (CHAOS_TARGET)
+  IF(${CHAOS_TARGET} MATCHES "armhf") 
+    MESG("checking armhf cross compilation chain....")
+    find_program(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++-4.8)
+    find_program(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc-4.8)
+    
+    SET(COMP_FLAGS "-D__BSON_USEMEMCPY__ -mcpu=xscale -D__BSON_USEM")
+    SET(CHAOS_CROSS_HOST arm-linux-gnueabihf)
+  ELSE()
+    IF(${CHAOS_TARGET} MATCHES "arm-linux-2.6") 
+      MESG("Cross compiling for ARM(soft float) platforms on linux 2.6")
+      find_program(CMAKE_CXX_COMPILER arm-infn-linux-gnueabi-g++)
+      find_program(CMAKE_C_COMPILER arm-infn-linux-gnueabi-gcc)
+      SET(CHAOS_CROSS_HOST arm-infn-linux-gnueabi)
+      SET(COMP_FLAGS "-D__BSON_USEMEMCPY__ -mcpu=xscale -D__BSON_USEMEMCPY__ -DBOOST_ASIO_DISABLE_EVENTFD -mno-unaligned-access -DDISABLE_COMPARE_AND_SWAP -mfloat-abi=soft")
+      SET(CHAOS_BOOST_FLAGS "toolset=gcc-arm target-os=linux cxxflags=-DBOOST_ASIO_DISABLE_EVENTFD")
+      
+    ELSE()
+      IF(${CHAOS_TARGET} MATCHES "i686-linux26") 
+	MESG("Cross compiling for i686 platforms on linux 2.6")
+	find_program(CMAKE_CXX_COMPILER i686-nptl-linux-gnu-g++)
+	find_program(CMAKE_C_COMPILER i686-nptl-linux-gnu-gcc)
+	SET(CHAOS_CROSS_HOST i686-nptl-linux-gnu)
+	SET(COMP_FLAGS "-DBOOST_ASIO_DISABLE_EVENTFD -Wcast-align  -static-libstdc++ -static-libgcc")
+	SET(CHAOS_BOOST_FLAGS "target-os=linux cxxflags=-DBOOST_ASIO_DISABLE_EVENTFD link=static")
+      ELSE()
+	IF(${CHAOS_TARGET} MATCHES "crio90xx") 
+	  MESG("Cross compiling for crio90xx")
+	  find_program(CMAKE_CXX_COMPILER arm-nilrt-linux-gnueabi-g++)
+	  find_program(CMAKE_C_COMPILER arm-nilrt-linux-gnueabi-gcc)
+	  SET(CMAKE_EXE_LINKER_FLAGS -L/usr/local/chaos/oecore-x86_64/sysroots/armv7a-vfp-neon-nilrt-linux-gnueabi/lib)
+	  SET(CHAOS_CROSS_HOST arm-nilrt-linux-gnueabi)
+	  SET(COMP_FLAGS "-march=armv7-a -mthumb-interwork -mfloat-abi=softfp -mfpu=neon -mno-unaligned-access --sysroot=/usr/local/chaos/oecore-x86_64/sysroots/armv7a-vfp-neon-nilrt-linux-gnueabi -L/usr/local/chaos/oecore-x86_64/sysroots/armv7a-vfp-neon-nilrt-linux-gnueabi/lib")
+	  SET(CHAOS_BOOST_FLAGS "target-os=linux cxxflags=-DBOOST_ASIO_DISABLE_EVENTFD")
+	ELSE()
+	  ERROR("UNSUPPORTED CHAOS_TARGET ${CHAOS_TARGET}")
+	ENDIF()
+      ENDIF()
+    ENDIF()
+  ENDIF()
+  IF(NOT CMAKE_CXX_COMPILER)
+    ERROR("CANNOT FOND COMPILER FOR ${CHAOS_TARGET}, \"${CHAOS_CROSS_HOST}-g++\" should be found in path")
+  ENDIF()
+ENDIF()
+SET(CHAOS_BOOST_FLAGS "${CHAOS_BOOST_FLAGS} --cxxflags=-fPIC -DCHAOS --prefix=${CMAKE_INSTALL_PREFIX} --with-program_options  --with-chrono --with-filesystem --with-iostreams --with-log --with-regex --with-random --with-system --with-thread --with-atomic --with-timer link=static install")
+
+######
+
+#### TOOL VERSIONS
+if( DEFINED ENV{CHAOS_BOOST_VERSION})
+  SET(BOOST_VERSION ENV{CHAOS_BOOST_VERSION})
+ELSE()
+  SET(BOOST_VERSION 56)
+ENDIF()
+
+#####
+
+
+MESG("Chaos Generic settings dir ${CMAKE_CURRENT_SOURCE_DIR} CHAOS_FRAMEWORK: ${CHAOS_FRAMEWORK}")
+MESG("System : ${CHAOS_SYSTEM_NAME}")
+MESG("Installation Dir : ${CMAKE_INSTALL_PREFIX}")
+MESG("CXX compiler : ${CMAKE_CXX_COMPILER}")
+MESG("C compiler   : ${CMAKE_C_COMPILER}")
+
+
+
+
+
+IF( DEFINED ENV{CHAOS_CROSS_HOST})
+  
+  SET( CROSS_HOST "--host=$ENV{CHAOS_CROSS_HOST}")
+  MESG("cross parameters ${CROSS_HOST} CMAKE: ${CMAKE_CHAOS}")
+ELSE()
+  SET( CROSS_HOST "")
+ENDIF()
+
+
+IF(NOT DEFINED PROCESSOR_COUNT)
+  SET(PROCESSOR_COUNT 4)
+ENDIF()
+
+
+IF( ( DEFINED ENV{CHAOS32}) OR CHAOS_FORCE_32 )
+  MESG("Enabling 32 bit Compilation")
+  set (BUILD_FORCE_32 1)
+  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
+  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
+  SET( CHAOS_BOOST_FLAGS "${CHAOS_BOOST_FLAGS} cflags=-m32 cxxflags=-m32 address-model=32")
+  set (CMAKE_LINK_FLAGS "-m32")
+ENDIF()
+
+INCLUDE_DIRECTORIES(${CHAOS_FRAMEWORK})
+# if( DEFINED ENV{CHAOS_BUNDLE} )
+#     MESSAGE(STATUS "Using Chaos Bundle Dir $ENV{CHAOS_BUNDLE}")
+#     set (PROJECT_SOURCE_DIR $ENV{CHAOS_BUNDLE})
+#     INCLUDE_DIRECTORIES($ENV{CHAOS_BUNDLE}/chaosframework)
+# ENDIF()
+
+If(CHAOS_C_COMPILER)
+  MESG("Setting C compiler ${CHAOS_C_COMPILER}")
+  SET(CMAKE_C_COMPILER ${CHAOS_C_COMPILER})
+ENDIF()
+
+IF(CHAOS_CC_COMPILER)
+  MESG("Setting CC compiler ${CHAOS_CC_COMPILER}")
+  SET(CMAKE_CXX_COMPILER ${CHAOS_CC_COMPILER})
+ENDIF()
+
+SET( CMAKE_CHAOS  $ENV{CHAOS_CMAKE_FLAGS})
+
+ADD_DEFINITIONS(-O2)
+
+if (CHAOS_DEBUG) 
+  add_definitions(-DDEBUG -g)
+  SET(CMAKE_BUILD_TYPE Debug)
+ENDIF()
+
+
+#set(FrameworkLib $ENV{CHAOS_LINK_LIBRARY})
+#separate_arguments(FrameworkLib)
+SET(CMAKE_EXE_LINKER_FLAGS "-static-libstdc++")
+
+IF(CHAOS_STATIC)
+  MESG("Enabling Static compilation")
+  SET(BUILD_FORCE_STATIC 1)
+  ADD_DEFINITIONS(-DCHAOS_STATIC)
+  SET(CMAKE_EXE_LINKER_FLAGS "-static")
+  SET(BUILD_SHARED_LIBRARIES OFF)
+  SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS)
+  SET(CMAKE_SHARED_LIBRARY_LINK_CC_FLAGS)
+ELSE()
+  add_definitions(-DBOOST_ALL_DYN_LINK)
+ENDIF()
+
+SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+
+
+
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build)
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build)
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build)
+
+INCLUDE_DIRECTORIES(. ../.. ../ ${PROJECT_SOURCE_DIR} ${CMAKE_INSTALL_PREFIX}/include)
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/build ${CMAKE_INSTALL_PREFIX}/lib)
+
+string (REGEX MATCH "[a-zA-Z_\\.]+/[a-zA-Z_\\.]+$" PROJECT_OUT_H  ${CMAKE_CURRENT_SOURCE_DIR})
+
+foreach(cu ${CHAOS_CUS})
+  string (REPLACE ".cpp" ".h" cuh ${cu})
+
+  MESG("CU defined ${cu}")
+  IF (DEFINED CU_H)
+    SET(CU_H ${CU_H} ${cuh})
+  ELSE()
+    SET(CU_H ${cuh})
+  ENDIF()
+  IF (DEFINED CU_H)
+    INSTALL(FILES ${CU_H} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_OUT_H})
+  ENDIF()
+ENDFOREACH()
+
+IF (NOT DEFINED CHAOS_INSTALL_DIRS)
+  SET(CHAOS_INSTALL_DIRS core models)
+ENDIF()
+
+foreach( dir ${CHAOS_INSTALL_DIRS})
+
+  IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${dir})
+    FILE(GLOB core_src ${dir}/*.h)
+    INSTALL(FILES ${core_src} DESTINATION include/${PROJECT_OUT_H}/${dir})
+    MESG("${dir} directory exists")
+  ENDIF()
+ENDFOREACH()
+
+IF (DEFINED PROJECT_NAME)
+  FILE(GLOB conf_src conf/*)
+  FILE(GLOB perf_src perf/*)
+  INSTALL(FILES ${conf_src} ${perf_src} DESTINATION etc/${PROJECT_NAME})
+ENDIF()
+
+SET(CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX})
+SET(CMAKE_LIBRARY_PATH ${CMAKE_INSTALL_PREFIX}/lib)
+unset(Boost_FOUND CACHE)
+find_package( Boost COMPONENTS program_options regex date_time system chrono regex log_setup log filesystem thread atomic)
+if(Boost_FOUND)
+  MESG("boost found in ${Boost_INCLUDE_DIRS}")
+  include_directories(${Boost_INCLUDE_DIRS}) 
+else()
+  MESG("boost not found downloading...")
+  boostInstall(${BOOST_VERSION} http://download.sourceforge.net/project/boost/boost/1.${BOOST_VERSION}.0 "${CHAOS_BOOST_FLAGS}")
+  # gitCloneUrl(boost https://github.com/boostorg)
+  # gitCheckOut(boost boost-1.${BOOST_VERSION}.0)
+  # execute_process(
+  #   COMMAND ./bootstrap.sh
+  #   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/external/boost
+  #   RESULT_VARIABLE err
+  #   OUTPUT_VARIABLE out
+  #   )
+  # IF(err)
+  #   ERROR("bootstrapping boost")
+  # ENDIF()
+
+endif()
+
+
+CheckConfigureBuild(jsoncpp "-DJSONCPP_WITH_TESTS=OFF -DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF" https://github.com/bisegni )
+CheckConfigureBuild(mongoose-cpp "-DHAS_JSONCPP=ON -DENABLE_PIC=ON" https://github.com/bisegni )
+
+
+
-- 
GitLab