diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..0074d8f8226cd2d7070bafd7378cfdb5f7b42600
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+*.cflags
+*.config
+*.creator
+*.cxxflags
+*.files
+*.includes
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ceeecd963109e3bf0409d1fc6823191228718758..9a5baefac94726e63f772dda0afa8a0752814071 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,3 +1,269 @@
+cmake_minimum_required(VERSION 2.8.11)
+
+set(proj_name fazia-ecc)
+set(proj_version 2.0)
+if(${CMAKE_VERSION} VERSION_LESS 3.0)
+   project(${proj_name})
+   set(PROJECT_VERSION ${proj_version})
+   set(${proj_name}_VERSION ${proj_version})
+else()
+   cmake_policy(VERSION 3.0)
+   project(${proj_name} VERSION ${proj_version})
+endif()
+
+set(CMAKE_BUILD_TYPE "RelWithDebInfo")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
+    ${CMAKE_SOURCE_DIR}/cmake
+    ${CMAKE_SOURCE_DIR}/externals/cmake/AddSubproject
+    )
+
+include(AddSubproject)
+
+# automatically add paths to external libraries to RPATH of all binaries
+set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+# =============================================================================
+# ------------------------------ Build options --------------------------------
+# =============================================================================
+
+option(USE_TAPIRMQ "use TapirMQ-client to push metadata and logs to InfluxDB" ON)
+
+set(LIBARIES_TO_LINK)
+
+# look for KaliVeda with FAZIA libraries and optionally sqlite
+find_package(KaliVeda 1.10 REQUIRED FAZIA)
+include(${KALIVEDA_USE_FILE})
+list(APPEND LIBRARIES_TO_LINK ${KALIVEDA_LIBRARIES})
+
+# look for ROOT
+find_package(ROOT REQUIRED GuiHtml Thread)
+include(SetUpROOTBuild)
+list(APPEND LIBRARIES_TO_LINK ${ROOT_LIBRARIES})
+
+# look for libcurl
+find_package(CURL REQUIRED)
+if(CURL_FOUND)
+   include_directories(${CURL_INCLUDE_DIRS})
+endif()
+
+# to read GANIL MFM merged frame (INDRA-FAZIA)
+#---sources available from: https://gitlab.in2p3.fr/jdfcode/mfmlib.git
+find_package(mfmlib QUIET)
+if(mfmlib_FOUND)
+   set(HAVE_MFMLIB yes)
+   include_directories(${mfmlib_INCLUDE_DIRS})
+   list(APPEND LIBRARIES_TO_LINK ${mfmlib_LIBRARIES})
+endif(mfmlib_FOUND)
+
+# to read GANIL Mesytec data
+#---sources available from:  https://gitlab.in2p3.fr/mesytec-ganil/mesytec_data
+find_package(mesytec_data REQUIRED)
+if(mesytec_data_FOUND)
+   set(WITH_MESYTEC yes)
+   include_directories(${mesytec_data_INCLUDE_DIRS})
+   list(APPEND LIBRARIES_TO_LINK ${mesytec_data_LIBRARIES})
+
+else()
+   message(STATUS "mesytec_data not found...")
+endif()
+
+
+# look for boost
+find_package(Boost COMPONENTS program_options)
+if(Boost_PROGRAM_OPTIONS_FOUND)
+   set(HAVE_BOOST yes)
+   include_directories(${Boost_INCLUDE_DIRS})
+   list(APPEND LIBRARIES_TO_LINK ${Boost_PROGRAM_OPTIONS_LIBRARY})
+endif()
+
+include(GNUInstallDirs)
+set(CMAKE_INSTALL_PKGINCDIR ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
+set(CMAKE_INSTALL_PKGLIBDIR ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME})
+set(CMAKE_INSTALL_PKGCONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
+
+#-------------------------------------------------------------------------------------------
+# Build & install analysis tools (former fazia-oscillo branch)
+# look for protobuf
+find_package(Protobuf)
+if(NOT PROTOBUF_FOUND)
+   # we may need pkg-config to find installation
+   find_package(PkgConfig QUIET)
+
+   if(PkgConfig_FOUND)
+      message(STATUS "Looking for protobuf with pkg-config")
+      ## use pkg-config to get hints for protobuf locations
+      pkg_check_modules(PROTOBUF QUIET protobuf)
+      if(PROTOBUF_FOUND)
+         set(CMAKE_LIBRARY_PATH ${PROTOBUF_LIBRARY_DIRS} ${CMAKE_LIBRARY_PATH})
+         set(PROTOBUF_INCLUDE_DIR ${PROTOBUF_INCLUDE_DIRS})
+         set(Protobuf_INCLUDE_DIR ${PROTOBUF_INCLUDE_DIRS})
+         find_package(Protobuf)
+      endif(PROTOBUF_FOUND)
+   endif(PkgConfig_FOUND)
+endif(NOT PROTOBUF_FOUND)
+if(PROTOBUF_FOUND)
+    # protobuf requires C++11 or higher
+    # check if -std=c++11/4/7 flag already in cxx flags
+    string(FIND ${CMAKE_CXX_FLAGS} "-std=c++11" CPP11_FLAGS)
+    string(FIND ${CMAKE_CXX_FLAGS} "-std=c++14" CPP14_FLAGS)
+    string(FIND ${CMAKE_CXX_FLAGS} "-std=c++17" CPP17_FLAGS)
+    if((CPP11_FLAGS GREATER 0) OR (CPP14_FLAGS GREATER 0) OR (CPP17_FLAGS GREATER 0))
+        # nothing to do, one of flags is already present
+    else()
+       include(CheckCXXCompilerFlag)
+       CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
+       if(COMPILER_SUPPORTS_CXX11)
+           set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+       endif()
+    endif()
+endif(PROTOBUF_FOUND)
+
+add_definitions( -DOSCILLO_DATADIR="${CMAKE_INSTALL_FULL_SYSCONFDIR}" )
+
+# look for ZeroMQ
+find_package(ZMQ)
+if(PROTOBUF_FOUND AND ZMQ_FOUND)
+   set(HAVE_PROTOBUF yes)
+   include_directories(${PROTOBUF_INCLUDE_DIRS})
+   message(STATUS "Protobuf include dir = ${PROTOBUF_INCLUDE_DIRS}")
+   include_directories(${CMAKE_BINARY_DIR}/protobuf)
+
+   set(HAVE_ZMQ_H yes)
+   include_directories(${ZMQ_INCLUDE_DIRS})
+   list(APPEND LIBRARIES_TO_LINK ${ZMQ_LIBRARIES})
+   message(STATUS "ZMQ include dir = ${ZMQ_INCLUDE_DIRS}")
+   message(STATUS "ZMQ library     = ${ZMQ_LIBRARIES}")
+
+   # generate protobuf source from event description
+   set(FAZIA_EVENT_PROTO FzEventSet.proto)
+   add_subdirectory(protobuf)
+   get_property(FAZIA_PROTOBUF_LIB GLOBAL PROPERTY FAZIA_PROTOBUF_LIB)
+   list(APPEND LIBRARIES_TO_LINK ${FAZIA_PROTOBUF_LIB})
+
+endif(PROTOBUF_FOUND AND ZMQ_FOUND)
+
+set(LIBRARY_TARGETS)
+if(USE_TAPIRMQ)
+    list(APPEND LIBRARY_TARGETS tapirmq-client)
+    add_subproject(externals/tapirmq-client
+        PATH_TO_LIBS "$ORIGIN/fazia-ecc:$ORIGIN/../lib/fazia-ecc")
+    message(NOTICE "using TapirMQ-client library")
+endif(USE_TAPIRMQ)
+
+
+# generate config.h
+configure_file(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/fzoscillo-config.h)
+install(FILES ${CMAKE_BINARY_DIR}/fzoscillo-config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+include_directories(${CMAKE_BINARY_DIR})
+add_definitions( -DHAVE_CONFIG_H )
+
+add_definitions( -DPKGBUILDDIR=${PROJECT_BINARY_DIR} -DPKGDATADIR=${CMAKE_INSTALL_FULL_DATADIR} -DPKGHTMLDIR=${CMAKE_INSTALL_FULL_HTMLDIR} )
+
+list(APPEND LIBRARY_TARGETS fazia-ecc-base)
+add_subdirectory(base)
+include_directories(${CMAKE_SOURCE_DIR}/base)
+list(APPEND LIBRARY_TARGETS fazia-ecc-ecc)
+add_subdirectory(ecc)
+install_subproject_targets()
+
+include_directories(${CMAKE_SOURCE_DIR}/ecc)
+list(APPEND LIBRARY_TARGETS fazia-ecc-mon)
+add_subdirectory(monitoring)
+include_directories(${CMAKE_SOURCE_DIR}/monitoring)
+
+add_subdirectory(merger)
+
+list(APPEND LIBRARIES_TO_LINK ${LIBRARY_TARGETS})
+
+add_subdirectory(execs)
+
+set(doc_DATA README INSTALL README.server README.usersguide COPYING)
+install(FILES ${doc_DATA} DESTINATION ${CMAKE_INSTALL_DOCDIR})
+
+install(DIRECTORY etc/ DESTINATION ${CMAKE_INSTALL_SYSCONFDIR})
+# install PHP scripts for webserver database access
+install(DIRECTORY webserver DESTINATION ${CMAKE_INSTALL_SYSCONFDIR})
+
+include(CreateConfigScript)
+create_config_script()
+
+
+if(PROTOBUF_FOUND AND ZMQ_FOUND)
+
+
+   if(DEFINED ENV{SITE})
+           if($ENV{SITE} STREQUAL "CCIN2P3")	#-at IN2P3 Computing Centre, build with support for xrootd
+                   find_package(XROOTD)
+                   if(XROOTD_FOUND)
+                           list(APPEND LIBRARIES_TO_LINK ${XROOTD_LIBRARIES})
+                   endif()
+           endif()
+   endif()
+
+   # configure subdirectories for different executables
+   add_subdirectory(oscillo)
+   add_subdirectory(viewer)
+   if(HAVE_MFMLIB AND WITH_MESYTEC)
+       add_subdirectory(indra-viewer)
+       add_subdirectory(indra-scaler)
+   endif()
+# - obsolete: do not build
+#   add_subdirectory(converter)
+   add_subdirectory(database)
+   add_subdirectory(replay)
+   add_subdirectory(scaler)
+
+endif(PROTOBUF_FOUND AND ZMQ_FOUND)
+
+include(CheckCXXSymbolExists)
+set(CMAKE_REQUIRED_INCLUDES ${KALIVEDA_INCLUDE_DIR})
+CHECK_CXX_SYMBOL_EXISTS(WITH_RSQLITE KVConfig.h GOT_KVSQLITE)
+
+if(GOT_KVSQLITE)
+   message(STATUS "Got KVSQLITE")
+   add_subdirectory(dbviewer)
+else()
+   message(STATUS "No KVSQLITE: dbviewer directory will not be compiled")
+endif()
+
+
+# set RPATH on all executables in order to find private utility libraries
+# libfazia_protobuf_event.so & libfazia_sound.so which will not be installed in a
+# standard library directory but in $PREFIX/bin/fazia-ecc/
+get_property(EXEC_TARGET_LIST GLOBAL PROPERTY EXEC_TARGET_LIST)
+foreach(exec_target ${EXEC_TARGET_LIST})
+    get_target_property(TARGET_RUNPATH ${exec_target} INSTALL_RPATH)
+    list(APPEND TARGET_RUNPATH ${CMAKE_INSTALL_FULL_BINDIR}/${PROJECT_NAME})
+   set_target_properties(${exec_target} PROPERTIES INSTALL_RPATH "${TARGET_RUNPATH}")
+endforeach()
+
+#install user's guides
+install(DIRECTORY doc/ DESTINATION ${CMAKE_INSTALL_HTMLDIR})
+
+#generate & install class reference doc
+add_custom_target(html
+   make -f ${PROJECT_SOURCE_DIR}/make.html ROOTEXEC=${ROOT_EXECUTABLE} srcdir=${PROJECT_SOURCE_DIR} builddir=${PROJECT_BUILD_DIR}
+   COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_BINARY_DIR}/htmldoc ${CMAKE_INSTALL_FULL_HTMLDIR}
+   WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+   )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 find_package(Protobuf REQUIRED)
 PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS MergerInfo.proto)