Index: trunk/Mars/CMakeLists.txt
===================================================================
--- trunk/Mars/CMakeLists.txt	(revision 18956)
+++ trunk/Mars/CMakeLists.txt	(revision 18956)
@@ -0,0 +1,226 @@
+# ------------ cmake --------------
+CMAKE_MINIMUM_REQUIRED(VERSION 3.0 FATAL_ERROR)
+CMAKE_POLICY(SET CMP0048 NEW)
+
+# Enable debug symbols by default
+# must be done before project() statement
+IF (NOT CMAKE_BUILD_TYPE)
+	SET(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build (Debug or Release)" FORCE)
+ENDIF()
+# (you can also set it on the command line: -D CMAKE_BUILD_TYPE=Release)
+
+# --------- Project --------------
+PROJECT(Mars VERSION 1.8.3.13)
+
+# ------- For config.h.in --------
+SET(PACKAGE_MAINTAINER "Thomas Bretz")
+SET(PACKAGE_BUGREPORT  "tbretz@physik.rwth-aachen.de")
+#SET(PACKAGE_URL        "")
+
+#SET(CMAKE_VERBOSE_MAKEFILE ON)
+
+# To check for an include file you do this:
+#CHECK_INCLUDE_FILE("stdint.h"        HAVE_STDINT_H)
+# To check the size of a primitive type:
+#CHECK_TYPE_SIZE("int"   SIZEOF_INT)
+
+# =========== pkg-config ============
+FIND_PACKAGE(PkgConfig)
+FIND_PACKAGE(PackageHandleStandardArgs)
+
+
+# ============= libnova ==============
+
+PKG_CHECK_MODULES(Nova Nova)
+
+# Try to locate the package in the default path
+# and in the path provided by pkg-config
+FIND_PATH(NOVA_INCLUDE_DIR NAMES libnova/libnova.h PATHS ${NOVA_INCLUDE_DIRS})
+FIND_LIBRARY(NOVA_LIBRARY NAMES nova PATHS ${NOVA_LIBRARY_DIRS})
+
+# Check if NOVA_LIBARARY and NOVA_INCLUDE_DIR is set
+# Print a message otherwise
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(libnova DEFAULT_MSG NOVA_LIBRARY NOVA_INCLUDE_DIR)
+
+# Mark those variables to be displayed as 'advanced' in the GUI
+MARK_AS_ADVANCED(NOVA_LIBRARY NOVA_INCLUDE_DIR)
+
+# handle success
+IF(NOVA_FOUND AND NOT NOVA_FIND_QUIETLY)
+    MESSAGE(STATUS "Found Nova ${NOVA_LIBRARY} in ${NOVA_INCLUDE_DIR}")
+ENDIF()
+
+
+# ============== libz ================
+
+FIND_PACKAGE(ZLIB REQUIRED)
+
+
+# =========== Enable C++11 ===========
+
+SET(CMAKE_CXX_STANDARD 11)
+SET(CMAKE_CXX_FLAGS
+	"${CMAKE_CXX_FLAGS} -Wall -Winit-self -Wpointer-arith \
+         -Wcast-align -Wformat=2 -Woverloaded-virtual \
+         -Wnon-virtual-dtor -Wshadow -fPIC") # -Wextra
+
+SET(CMAKE_CXX_FLAGS
+	"${CMAKE_CXX_FLAGS} \
+         -DMARSVER=\\\"1.0\\\" -D_REENTRANT -D__MARS__ -D__LINUX__ \
+         -DPACKAGE_VERSION=\\\"1.0\\\" -DREVISION=\\\"1.0\\\" \
+         -DPACKAGE_NAME=\\\"MARS\\\" -DHAVE_ZLIB")
+
+
+# --------- config.h -------------
+
+#CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/config.h.in" "${PROJECT_BINARY_DIR}/config.h")
+#INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
+
+SET(CMAKE_MODULE_PATH $ENV{ROOTSYS}/etc/cmake ${CMAKE_MODULE_PATH})
+
+
+# You need to tell CMake where to find the ROOT installation. This can be done in a number of ways:
+#   - ROOT built with classic configure/make use the provided $ROOTSYS/etc/cmake/FindROOT.cmake
+#   - ROOT built with CMake. Add in CMAKE_PREFIX_PATH the installation prefix for ROOT
+#LIST(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
+
+#---Locate the ROOT package and defines a number of variables (e.g. ROOT_INCLUDE_DIRS)
+
+# -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree
+# -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread
+# -lASImage -lMinuit -lHistPainter -lThread
+
+FIND_PACKAGE(ROOT REQUIRED COMPONENTS Gui Minuit)
+
+
+#MESSAGE("INCL_DIRS: ${ROOT_INCLUDE_DIRS}")
+#MESSAGE("LIBS:      ${ROOT_LIBRARIES}")
+#MESSAGE("DEFS:      ${ROOT_DEFINITIONS}")
+#MESSAGE("CXXFLAGS:  ${ROOT_CXX_FLAGS}")
+#MESSAGE("CXFLAGS:   ${ROOT_CC_FLAGS}")
+#MESSAGE("FOUND:     ${ROOT_FOUND}")
+#MESSAGE("FILE:      ${ROOT_USE_FILE}")
+#MESSAGE("DIR:       ${CMAKE_CURRENT_SOURCE_DIR}")
+#ROOT_<library>_LIBRARY	PATH	Full path for each of the ROOT libraries listed in COMPONENTS
+#ROOT_<command>_CMD	PATH	Full path for each ROOT executable (rootcling, root, hadd, etc.)
+#ROOT_<option>_FOUND	BOOL	True for each enabled build option (e.g. cocoa, python, xrootd, etc.)
+
+#---Define useful ROOT functions and macros (e.g. ROOT_GENERATE_DICTIONARY)
+#INCLUDE(${ROOT_USE_FILE})
+
+# function ROOT_GENERATE_DICTIONARY( dictionary
+#                                    header1 header2 ...
+#                                    LINKDEF linkdef1 ...
+#                                    OPTIONS opt1...)
+
+# -------------------------------------------------------
+
+MACRO(SRCFILES subdir)
+
+ 	EXECUTE_PROCESS(COMMAND
+		${PROJECT_SOURCE_DIR}/Makefile.extract.sh ${subdir}
+	        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/${subdir}
+		OUTPUT_VARIABLE _HEADERS)
+
+        SEPARATE_ARGUMENTS(_HEADERS)
+
+        LIST(GET       _HEADERS 0 _CINT)
+        LIST(REMOVE_AT _HEADERS 0)
+
+ 	SET(_SRCLIST ${_HEADERS})
+
+        STRING(REPLACE "${subdir}/" " "    _HEADERS ${_HEADERS}) # Remove directory
+        STRING(REPLACE ".cc"        ".h"   _HEADERS ${_HEADERS}) # change extension
+        STRING(REPLACE ".cxx"       ".hxx" _HEADERS ${_HEADERS}) # special for files in mmc
+
+	SEPARATE_ARGUMENTS(_HEADERS)
+
+        ROOT_GENERATE_DICTIONARY(G__${_CINT} ${_HEADERS} ${_CINT}Incl.h LINKDEF ${_CINT}LinkDef.h OPTIONS -p)
+	TARGET_SOURCES(mars PRIVATE G__${_CINT}.cxx ${_SRCLIST})
+
+ENDMACRO()
+
+# -------------------------------------------------------
+
+#SET(DIRECTORIES mmc)
+
+SET(DIRECTORIES
+	manalysis
+        mastro
+        mbadpixels
+	mbase
+        mcalib
+        mcamera
+	mcorsika
+        mdata
+        mdrs
+        melectronics
+        mextralgo
+        mfbase
+	mfileio
+        mfilter
+        mgeom
+        mgui
+        mhbase
+        mhcalib
+        mhflux
+        mhft
+        mhist
+        mhvstime
+        mimage
+        mjobs
+        mjoptim
+        mjtrain
+        mmain
+        mmc
+        mmovie
+        mmuon
+        mpedestal
+        mpointing
+        mranforest
+        mraw
+        mreport
+        msignal
+        msim
+        msimcamera
+        msimreflector
+        msql
+        mtools
+        mtrigger
+)
+
+INCLUDE_DIRECTORIES(${ROOT_INCLUDE_DIRS} ${DIRECTORIES} mcore .)
+
+ROOT_GENERATE_DICTIONARY(G__MARS
+	   factofits.h
+	   factfits.h
+	   DrsCalib.h
+	   PixelMap.h
+	   Interpolator2D.h
+	   nova.h
+	   Prediction.h
+           MIncl.h
+        LINKDEF MLinkDef.h
+        OPTIONS -p -D__MARS__ -DHAVE_ZLIB)
+
+ADD_LIBRARY(mars SHARED G__MARS.cxx)
+TARGET_LINK_LIBRARIES(mars ${ROOT_LIBRARIES})
+TARGET_LINK_LIBRARIES(mars ${NOVA_LIBRARY})
+TARGET_LINK_LIBRARIES(mars ZLIB::ZLIB)
+
+FOREACH(DIR ${DIRECTORIES})
+	MESSAGE(STATUS "Reading source list from ${DIR}/Makefile")
+	SRCFILES(${DIR})
+ENDFOREACH()
+
+ADD_CUSTOM_COMMAND(TARGET mars POST_BUILD
+	COMMAND ln -sf ${CMAKE_CURRENT_BINARY_DIR}/libmars.so ${PROJECT_SOURCE_DIR}/
+        COMMENT "Creating symlink for libmars.so to ${CMAKE_CURRENT_BINARY_DIR}")
+
+#---Create a shared library with geneated dictionary
+#ADD_LIBRARY(Event SHARED Event.cxx G__Event.cxx)
+#TARGET_LINK_LIBRARIES(Event ${ROOT_LIBRARIES})
+
+#---Create  a main program using the library
+#ADD_EXECUTABLE(Main MainEvent.cxx)
+#TARGET_LINK_LIBRARIES(Main Event)
Index: trunk/Mars/Makefile.extract.sh
===================================================================
--- trunk/Mars/Makefile.extract.sh	(revision 18956)
+++ trunk/Mars/Makefile.extract.sh	(revision 18956)
@@ -0,0 +1,20 @@
+#!/bin/bash
+showvar() 
+{
+( grep -v Makefile Makefile; echo -e %.var:\\n\\t@echo $\($*\) ) |  make -s -f  - ${1}.var
+
+#<<'EOF'
+#include Makefile
+#
+#%.var:
+#	@echo $($*)
+#EOF
+}
+
+
+STRING=$(showvar SRCFILES)
+
+echo -n $(showvar CINT)
+for file in ${STRING[@]}; do
+   echo -ne \ ${1}/${file}
+done
