From f6065b4a93dd5ed2a43a061904f5979d4eea95e0 Mon Sep 17 00:00:00 2001
From: Andrea Michelotti <andrea.michelotti@lnf.infn.it>
Date: Mon, 18 Jul 2016 16:04:12 +0200
Subject: [PATCH] fix for framework standalone compilation

---
 ArchitectureTests/CMakeLists.txt          |  4 ++-
 CMakeLists.txt                            | 42 +++++++++++++----------
 bootstrap.sh                              |  9 ++---
 chaos/common/CMakeLists.txt               | 10 ++++--
 test/MemcachedEmbeddedTest/CMakeLists.txt |  6 ++++
 5 files changed, 46 insertions(+), 25 deletions(-)

diff --git a/ArchitectureTests/CMakeLists.txt b/ArchitectureTests/CMakeLists.txt
index 9736bdc69..a4616ff23 100644
--- a/ArchitectureTests/CMakeLists.txt
+++ b/ArchitectureTests/CMakeLists.txt
@@ -6,7 +6,9 @@ ENDIF()
 SET(ArchitectureTestsSrc main.cpp)
 SET(ArchitectureTestsSrc
     ${ArchitectureTestsSrc}
-    utility/HashMapTest.cpp)
+    utility/HashMapTest.cpp
+    utility/StateFlagCatalogTest.cpp
+    )
 SET(ArchitectureTestsSrc
     ${ArchitectureTestsSrc}
     network/FeederTest.cpp)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a9f62c31b..77da4f406 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,7 @@
 cmake_minimum_required(VERSION 2.6)
+option(CHAOS_MEMCACHE_TEST "Memcached test" OFF)
+option(CHAOS_ARCHITECTURE_TEST "Architecture tests" ON)
+
 IF (DEFINED ENV{CHAOS_BUNDLE} )
   include($ENV{CHAOS_BUNDLE}/tools/project_template/CMakeChaos.txt)
 ELSE()
@@ -18,7 +21,7 @@ add_definitions(-DDEBUG)
 EXECUTE_PROCESS(COMMAND chaos/common/version.sh)
 
 ADD_DEFINITIONS(-O3 )
-INCLUDE_DIRECTORIES(${CMAKE_INSTALL_PREFIX}/include)
+INCLUDE_DIRECTORIES(. ../ ../../ ${CMAKE_INSTALL_PREFIX}/include)
 LINK_DIRECTORIES(${CMAKE_INSTALL_PREFIX}/lib)
 IF(NOT BUILD_PREFIX)
 set (BUILD_PREFIX usr/local)
@@ -29,56 +32,59 @@ message(STATUS "Using ${BUILD_PREFIX} as installation directory")
 SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
 
 message(STATUS "Configure Common Layer")
-ADD_SUBDIRECTORY(chaos/common bin/bin_common)
+ADD_SUBDIRECTORY(chaos/common)
 
 message(STATUS "Configure CUToolkit Layer")
-ADD_SUBDIRECTORY(chaos/cu_toolkit bin/bin_cutoolkit)
+ADD_SUBDIRECTORY(chaos/cu_toolkit)
 
 message(STATUS "Configure UIToolkit Layer")
-ADD_SUBDIRECTORY(chaos/ui_toolkit bin/bin_uitoolkit)
+ADD_SUBDIRECTORY(chaos/ui_toolkit)
 
 IF (NOT CHAOS_NO_MONGO)
 message(STATUS "Configure Chaos Metadata Service")
-ADD_SUBDIRECTORY(ChaosMetadataService bin/bin_metadata_service)
+ADD_SUBDIRECTORY(ChaosMetadataService)
 ENDIF()
 
 message(STATUS "Configure Chaos Metadata Service Client Library")
-ADD_SUBDIRECTORY(ChaosMetadataServiceClient bin/bin_metadata_service_client)
+ADD_SUBDIRECTORY(ChaosMetadataServiceClient)
 
 message(STATUS "Configure Chaos Metadata Service Client Library Test Application")
-ADD_SUBDIRECTORY(ChaosMetadataServiceClientTest bin/ChaosMetadataServiceClientTest)
+ADD_SUBDIRECTORY(ChaosMetadataServiceClientTest)
 
 message(STATUS "Configure Chaos WAN Proxy")
-ADD_SUBDIRECTORY(ChaosWANProxy bin/bin_wan_proxy)
+ADD_SUBDIRECTORY(ChaosWANProxy)
 
 IF (NOT CHAOS_NO_MONGO)
 message(STATUS "Configure Chaos Data Service")
-ADD_SUBDIRECTORY(ChaosDataService bin/bin_cds)
+ADD_SUBDIRECTORY(ChaosDataService)
 ENDIF()
 
 message(STATUS "Configure Chaos Data Export")
-ADD_SUBDIRECTORY(ChaosDataExport bin/chaos_cde)
+ADD_SUBDIRECTORY(ChaosDataExport)
 
 message(STATUS "Configure Chaos CLI")
-ADD_SUBDIRECTORY(example/ChaosCLI bin/chaos_cli)
+ADD_SUBDIRECTORY(example/ChaosCLI)
 
 message(STATUS "Configure Chaos ChaosMDSCmd")
-ADD_SUBDIRECTORY(example/ChaosMDSCmd bin/ChaosMDSCmd)
+ADD_SUBDIRECTORY(example/ChaosMDSCmd)
 
 message(STATUS "Configure Chaos Performance Tester")
-ADD_SUBDIRECTORY(example/ChaosPerformanceTester bin/ChaosPerformanceTester)
+ADD_SUBDIRECTORY(example/ChaosPerformanceTester)
 
 #message(STATUS "Configure Control Unit Test examples")
 #ADD_SUBDIRECTORY(example/ControlUnitTest bin/bin_example_cutest)
 
 #message(STATUS "Configure BenchTest simulation excutable")
 #ADD_SUBDIRECTORY(example/BenchTest bin/bench_test)
+IF (CHAOS_MEMCACHE_TEST)
+  message(STATUS "Configure ChaosMemCacheTest test excutable")
+  ADD_SUBDIRECTORY(test/MemcachedEmbeddedTest)
+ENDIF()
 
-message(STATUS "Configure ChaosMemCacheTest test excutable")
-ADD_SUBDIRECTORY(test/MemcachedEmbeddedTest bin/cache_test)
-
-message(STATUS "Configure ChaosArchitectureTests test excutable")
-ADD_SUBDIRECTORY(ArchitectureTests bin/architecture_test)
+IF (CHAOS_ARCHITECTURE_TEST)
+  message(STATUS "Configure ChaosArchitectureTests test excutable")
+  ADD_SUBDIRECTORY(ArchitectureTests)
+ENDIF()
 
 # message(STATUS "Configure Chaos Snapshot Utility")
 # ADD_SUBDIRECTORY(ChaosSnapshotUtility/ChaosSnapshotUtility bin/chaos_snap_util)
diff --git a/bootstrap.sh b/bootstrap.sh
index 24559871f..b67805566 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -9,7 +9,8 @@ pushd `dirname $0` > /dev/null
 SCRIPTPATH=`pwd -P`
 popd > /dev/null
 
-
+# export CXXFLAGS="$CXXFLAGS -fPIC"
+# export CFLAGS="$CFLAGS -fPIC"
 chaos_exclude(){
     name=$1
     for i in $CHAOS_EXCLUDE_DIR;do
@@ -102,7 +103,7 @@ else
 	APPLE="true"
     ## 18, 16 doesnt compile
 	export LMEM_VERSION=1.0.18
-	export CHAOS_BOOST_FLAGS="$CHAOS_BOOST_FLAGS toolset=clang cxxflags=-stdlib=libstdc++ linkflags=-stdlib=libstdc++ link=static"
+	export CHAOS_BOOST_FLAGS="$CHAOS_BOOST_FLAGS toolset=clang cxxflags=\"-stdlib=libstdc++ -fPIC\" linkflags=-stdlib=libstdc++ link=static runtime-link=shared variant=release"
 
     fi
 
@@ -117,7 +118,7 @@ fi
 
 
 if [ -z "$CHAOS_BOOS_FLAGS" ];then
-    CHAOS_BOOST_FLAGS="$CHAOS_BOOST_FLAGS --prefix=$CHAOS_PREFIX --with-program_options --with-chrono --with-filesystem --with-iostreams --with-log --with-regex --with-random --with-system --with-thread --with-atomic --with-timer install"
+    CHAOS_BOOST_FLAGS="$CHAOS_BOOST_FLAGS --prefix=$CHAOS_PREFIX --with-program_options --with-chrono --with-filesystem --with-iostreams --with-log --with-regex --with-random --with-system --with-thread --with-atomic --with-timer install link=static runtime-link=shared variant=release cxxflags=-fPIC"
     echo "* setting CHAOS_BOOST_FLAGS=$CHAOS_BOOST_FLAGS"
 fi
 
@@ -370,7 +371,7 @@ if [ -z "$NO_MONGOOSE" ];then
 	fi
 	rm CMakeCache.txt
 	make clean
-	cmake $CHAOS_CMAKE_FLAGS -DHAS_JSONCPP=ON
+	cmake $CHAOS_CMAKE_FLAGS -DHAS_JSONCPP=ON -DENABLE_PIC=ON
 	# -DHAS_JSONCPP=ON
 	# if [ -n "$CHAOS_STATIC" ]; then
 	#     CXX=$CXX CC=$CC cmake $CHAOS_CMAKE_FLAGS -DHAS_JSONCPP=ON
diff --git a/chaos/common/CMakeLists.txt b/chaos/common/CMakeLists.txt
index f0b2ee819..8657c31a2 100644
--- a/chaos/common/CMakeLists.txt
+++ b/chaos/common/CMakeLists.txt
@@ -181,7 +181,8 @@ SET(common_lib_src ${common_lib_src}
         utility/InizializableService.cpp
         utility/SWEService.cpp
         utility/CheckList.cpp
-        utility/AggregatedCheckList.cpp)
+        utility/AggregatedCheckList.cpp
+)
 
 SET(common_lib_src ${common_lib_src}
         batch_command/BatchCommandExecutor.cpp
@@ -203,6 +204,11 @@ SET(common_lib_src ${common_lib_src}
         script/AbstractScriptVM.cpp
         script/AbstractScriptableClass.cpp)
 
+SET(common_lib_src ${common_lib_src}
+        status_manager/StatusFlagCatalog.cpp
+	status_manager/StatusFlag.cpp
+	status_manager/DeclareStatusFlag.cpp)
+
 #compile lua chaos vm and core files
 INCLUDE_DIRECTORIES(script/lua/core ./chaos/common ./chaos/common/metadata_logging ../../)
 FILE(GLOB LuaCoreSource script/lua/core/*.c)
@@ -226,7 +232,7 @@ 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 ${FrameworkLib})
+TARGET_LINK_LIBRARIES(chaos_common mongoose ${FrameworkLib})
 
 
 FILE(GLOB files "*.h")
diff --git a/test/MemcachedEmbeddedTest/CMakeLists.txt b/test/MemcachedEmbeddedTest/CMakeLists.txt
index bb4b6d9e8..78b89bbc3 100644
--- a/test/MemcachedEmbeddedTest/CMakeLists.txt
+++ b/test/MemcachedEmbeddedTest/CMakeLists.txt
@@ -1,6 +1,12 @@
 cmake_minimum_required(VERSION 2.6)
 option(BUILD_FORCE_32 "Set to ON to enable 32 bit compilation" OFF)
 
+IF (DEFINED ENV{CHAOS_BUNDLE} )
+  include($ENV{CHAOS_BUNDLE}/tools/project_template/CMakeChaos.txt)
+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( ($ENV{CHAOS32}) OR (BUILD_FORCE_32) )
     MESSAGE(STATUS "Enabling 32 bit Compilation")
     set (CMAKE_C_FLAGS "-m32")
-- 
GitLab