diff --git a/CMakeLists.txt b/CMakeLists.txt index 71cdeb2adf269e31ba23cd9292e0fb8d1eab342f..2ef7b1be95d9664e33a5ed65a1681cd8d5eb7413 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 5c791d1d7d10c4f7cd23d538d34de7d8430dcf1f..8b7b130d869f4e7431271507180f05f8d14ddb86 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 a4e78259325e105f3efc49a5e265468c74897e88..a57df1d48f7f319270977fb1bc2e325f6d506339 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 8a9f4f9f90593a5a1bf1c63352ef4b503e340fca..fea068d1cd9ce6b59242aff981d51acec9482513 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 c210c6ef1d54b3a9eb616495d9c1283fc4abe621..4a5d9a7302f9d02c4f97994e9bf7157f97c9f478 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 f9dc7db595dcfa8ca8acc5b63e4a5d9c838a154d..f3abd9bc009e4c8777ea25a4d264a6a2c5d90908 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 4a1cf8f72312dd7a87e4bc5f7c5a268199ebaf61..650fecc1d03e8d50cda5c921e8a000bbfadbdf73 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 0000000000000000000000000000000000000000..6a88b94e072d0bc6f4a73ee456f825e632981a32 --- /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 ) + + +