From 815c029a679373c1313ce48cdcace631c4c816c2 Mon Sep 17 00:00:00 2001
From: Konstantin Kutscher <kutscher@irmb.tu-bs.de>
Date: Wed, 22 Jan 2020 15:06:02 +0100
Subject: [PATCH] clean up and improve CMake project files

---
 .gitignore                                  |   2 +
 source/CMake/CMakeCABMacros.txt             |  63 ---
 source/CMake/CMakeCompilerMacros.txt        |  49 +-
 source/CMake/CMakePCHMacros.txt             |  44 --
 source/CMake/CMakeQtMacros.txt              | 374 ---------------
 source/CMake/CMakeRubyMacros.txt            |  26 -
 source/CMake/CMakeSetBoostStuff.txt         | 496 --------------------
 source/CMake/CMakeSetCompilerFlags.txt      |   9 +-
 source/CMake/CMakeSetMPIStuff.txt           |  90 ----
 source/CMake/CMakeSwigMacros.txt            | 162 -------
 source/CMake/compilerflags/clang.cmake      |  68 +++
 source/CMake/compilerflags/gccGeneric.cmake |  62 +++
 source/CMakeLists.txt                       |   8 +-
 13 files changed, 156 insertions(+), 1297 deletions(-)
 delete mode 100644 source/CMake/CMakePCHMacros.txt
 delete mode 100644 source/CMake/CMakeQtMacros.txt
 delete mode 100644 source/CMake/CMakeRubyMacros.txt
 delete mode 100644 source/CMake/CMakeSetBoostStuff.txt
 delete mode 100644 source/CMake/CMakeSetMPIStuff.txt
 delete mode 100644 source/CMake/CMakeSwigMacros.txt
 create mode 100644 source/CMake/compilerflags/clang.cmake
 create mode 100644 source/CMake/compilerflags/gccGeneric.cmake

diff --git a/.gitignore b/.gitignore
index 92cb4d36a..b4fd01331 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
+.gitignore
 bin/
+binWSL/
 source/MSVC2015/
 source/Applications/DLR-F16-Solid/f16-solid-coarse.cfg
diff --git a/source/CMake/CMakeCABMacros.txt b/source/CMake/CMakeCABMacros.txt
index dccb05a5b..bf832e2ec 100644
--- a/source/CMake/CMakeCABMacros.txt
+++ b/source/CMake/CMakeCABMacros.txt
@@ -63,12 +63,7 @@ ENDIF()
 ############################################################################
 # externe (ACHTUNG: die darin enthaltenen benoetigen teils noch macros die 
 # hier im Anschluss folgen
-INCLUDE("${SOURCE_ROOT}/CMake/CMakePCHMacros.txt")
 INCLUDE("${SOURCE_ROOT}/CMake/CMakeSetCompilerFlags.txt")
-#INCLUDE("${SOURCE_ROOT}/CMake/CMakeSetBoostStuff.txt")
-INCLUDE("${SOURCE_ROOT}/CMake/CMakeSetMPIStuff.txt")
-INCLUDE("${SOURCE_ROOT}/CMake/CMakeRubyMacros.txt")
-INCLUDE("${SOURCE_ROOT}/CMake/CMakeSwigMacros.txt")
 INCLUDE("${SOURCE_ROOT}/CMake/CMakeCompilerMacros.txt")
 
 ################################################################
@@ -242,53 +237,6 @@ MACRO(CREATE_CAB_PROJECT project_name build_type)
 
    MESSAGE(STATUS "configuring ${project_name} (type=${build_type})...")
 
-   #################################################################
-   ###   RCF                                                     ###
-   #################################################################
-   IF(RCF_VERSION_NUMBER)
-      #RCF wird durch include(.../rcf/CMakePackage.txt) konfiguriert
-      MESSAGE(STATUS "RCF-Ver.${RCF_VERSION_NUMBER} is available")
-   ENDIF()
-
-   #################################################################
-   ###   BOOST                                                   ###
-   #################################################################
-   IF(NEED_BOOST)
-      MESSAGE(STATUS "INCLUDE BOOST")
-      #LIST(REMOVE_DUPLICATES NECESSARY_BOOST_LIBS)
-      SET_BOOST_STUFF( ${NECESSARY_BOOST_LIBS} )
-   ENDIF()
-   
-   #################################################################
-   ###   MPI                                                     ###
-   #################################################################
-   IF(NEED_MPI)
-      MESSAGE(STATUS "INCLUDE MPI")
-      SET_MPI_STUFF(CAB_MACHINE)
-   ENDIF(NEED_MPI)
-   
-   #################################################################
-   ###   SWIG                                                    ###
-   #################################################################
-   IF(SWIG_FILES)
-      MESSAGE(STATUS "INCLUDE SWIG")
-      IF(NOT SWIG_FOUND)
-         SET_SWIG_STUFF()
-      ENDIF()
-      SET(TMP_OUTFILES "")
-      SWIG_WAPP_CPP(SWIG_FILES "ruby" TMP_OUTFILES)
-      LIST(APPEND ALL_SOURCES ${TMP_OUTFILES})
-   ENDIF()
-
-   #################################################################
-   ###   RUBY                                                    ###
-   #################################################################
-   IF(NEED_RUBY)
-      MESSAGE(STATUS "INCLUDE RUBY")
-      IF(NOT FOUND_RUBY)
-         SET_RUBY_STUFF()
-      ENDIF()
-   ENDIF()
 
    #################################################################
    ###   OS DEFINES                                              ###
@@ -363,17 +311,6 @@ MACRO(CREATE_CAB_PROJECT project_name build_type)
 
 ENDMACRO(CREATE_CAB_PROJECT project_name build_type)
 
-#################################################################
-# fuer kompatibilit�t zu alten versionen (NICH TMEHR NUTZEN)
-###############################################################
-MACRO(CREATE_CAB_PROJECT_DEPRECATED)
-  MESSAGE(WARNING "You are still using the old CREATE_CAB_PROJECT_DEPRECATED Macro, please e.g. swith to CREATE_CAB_PROJECT(${PROJECT_NAME} BINARY)")
-  IF(NOT CAB_PROJECT_NAME)
-     SET(CAB_PROJECT_NAME ${CMAKE_PROJECT_NAME})
-  ENDIF()
-  CREATE_CAB_PROJECT(${CAB_PROJECT_NAME} BINARY)
-ENDMACRO(CREATE_CAB_PROJECT_DEPRECATED)
-
 #################################################################
 # ALLGEMEINGUELTIGER STUFF
 # CAB_COMPILER setzen und machinespecific configfile laden
diff --git a/source/CMake/CMakeCompilerMacros.txt b/source/CMake/CMakeCompilerMacros.txt
index 34a658c97..a9aa05588 100644
--- a/source/CMake/CMakeCompilerMacros.txt
+++ b/source/CMake/CMakeCompilerMacros.txt
@@ -16,10 +16,10 @@ MACRO(IS_64BIT_SYSTEM is64BitOutVar)
                   OUTPUT_VARIABLE CAB_SYSTEM_INFO_1 )
     IF(${CAB_SYSTEM_INFO_1} MATCHES "64bit")
       SET(${is64BitOutVar} TRUE)
-    ENDIF()
+    ENDIF()
 
   ELSEIF(UNIX)
-
+
     EXEC_PROGRAM( uname                           
                   ARGS -m
                   OUTPUT_VARIABLE CAB_SYSTEM_INFO_1 )
@@ -70,42 +70,14 @@ MACRO(SET_CAB_COMPILER)
    ELSE()
       IF(NOT CAB_COMPILER)
          IF(MSVC)
-            IF( ${MSVC_VERSION} MATCHES "1400" AND CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc8_64" )
-            ELSEIF( ${MSVC_VERSION} MATCHES "1400" AND NOT CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc8_32" )
-            ELSEIF( ${MSVC_VERSION} MATCHES "1500" AND CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc9_64" )
-            ELSEIF( ${MSVC_VERSION} MATCHES "1500" AND NOT CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc9_32" )
-            ELSEIF( ${MSVC_VERSION} MATCHES "1600" AND CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc10_64" )
-            ELSEIF( ${MSVC_VERSION} MATCHES "1600" AND NOT CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc10_32" )
-            ELSEIF( ${MSVC_VERSION} MATCHES "1700" AND CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc11_64" )
-            ELSEIF( ${MSVC_VERSION} MATCHES "1700" AND NOT CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc11_32" )    
-            ELSEIF( ${MSVC_VERSION} MATCHES "1800" AND CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc12_64" )
-            ELSEIF( ${MSVC_VERSION} MATCHES "1800" AND NOT CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc12_32" )     
-            ELSEIF( ${MSVC_VERSION} MATCHES "1900" AND CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc14_64" )
-            ELSEIF( ${MSVC_VERSION} MATCHES "1900" AND NOT CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc14_32" )   
-            ELSEIF( ${MSVC_VERSION} MATCHES "1923" AND CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc19_64" )
-            ELSEIF( ${MSVC_VERSION} MATCHES "1923" AND NOT CMAKE_CL_64)
-              SET( CAB_COMPILER "msvc19_32" )			  
-            ELSE()
-              #MESSAGE(FATAL_ERROR "unknown ms studio version MSVC_VERSION = " ${MSVC_VERSION}) 
-			  IF(CMAKE_CL_64)
-				SET( CAB_COMPILER "msvc19_64" )
-			  ELSE()
-				SET( CAB_COMPILER "msvc19_32" )
-		      ENDIF()			  
-            ENDIF()
+		   IF(CMAKE_CL_64)
+		     SET( CAB_COMPILER "msvc19_64" )
+		   ELSE()
+		     SET( CAB_COMPILER "msvc19_32" )
+		   ENDIF()
+         #ELSEIF(APPLE)
+		 ELSEIF("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
+            SET( CAB_COMPILER "clang" )
          ELSE()
            EXEC_PROGRAM( ${CMAKE_CXX_COMPILER}                          
                           ARGS --version 
@@ -120,6 +92,7 @@ MACRO(SET_CAB_COMPILER)
 
             IF(CMAKE_COMPILER_IS_GNUCXX)
                SET(CAB_COMPILER_NAME "gcc")
+               SET(USE_GCC ON)
             ENDIF()
             
             SET(CAB_COMPILER "${CAB_COMPILER_NAME}${CAB_COMPILER_VERSION_MAJOR}${CAB_COMPILER_VERSION_MINOR}")
diff --git a/source/CMake/CMakePCHMacros.txt b/source/CMake/CMakePCHMacros.txt
deleted file mode 100644
index 5bbaddcf4..000000000
--- a/source/CMake/CMakePCHMacros.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-#usage:
-#SET_PCH_FLAGS(precompile.h precompile.cpp main.cpp a.cpp b.cpp)
-#
-# precompile.h muss alle header inkluden
-# precompile.cpp muss precompile.h inkluden
-# main.cpp, a.cpp, b.cpp muess precompile.h inkluden
-#makro setzt die entsprechenden compiler flags
-
-MACRO(SET_PCH_FLAGS pre_h pre_cpp ) #argn = cpps_using_pch
-   IF(NOT CMAKE_CXX_COMPILER)
-      MESSAGE(FATAL_ERROR "before SET_CAB_COMPILER-Macro PROJECT-Macro has to be called")
-   ENDIF()
-   
-   IF(MSVC)
-	   LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -DUSE_PRECOMPILED_HEADER_FILE)
-		##################################      
-		# precompiled.pch
-	   ##################################      
-		get_filename_component(PRE_NAME ${pre_h} NAME_WE)
-	   SET(PRE_PCH $(IntDir)/${PRE_NAME}.pch)
-
-	   ##################################      
-		# precompiled.cpp (=creating) anpassen
-	   ##################################      
-	   GET_TARGET_PROPERTY(oldProps ${pre_cpp} COMPILE_FLAGS)
-		  if (${oldProps} MATCHES NOTFOUND)
-		    SET(oldProps "")
-		  endif(${oldProps} MATCHES NOTFOUND)
-	   SET_SOURCE_FILES_PROPERTIES(${pre_cpp} PROPERTIES COMPILE_FLAGS "${oldProps} /Yc\"${pre_h}\" /Fp\"${PRE_PCH}\"")
-
-	   ##################################      
-		# restliche cpps (=using) anpassen
-		##################################      
-		FOREACH(cpp_file ${ARGN})
-			GET_TARGET_PROPERTY(oldProps ${cpp_file} COMPILE_FLAGS)
-			if (${oldProps} MATCHES NOTFOUND)
-				SET(oldProps "")
-			endif(${oldProps} MATCHES NOTFOUND)
-			SET_SOURCE_FILES_PROPERTIES(${cpp_file} PROPERTIES COMPILE_FLAGS "${oldProps} /Yu\"${pre_h}\" /Fp\"${PRE_PCH}\"")
-		ENDFOREACH()
-   ELSE()
-      MESSAGE(FATAL_ERROR "SET_PCH_FLAGS not working for anything else than MSVC right now")
-   ENDIF()
-ENDMACRO()
diff --git a/source/CMake/CMakeQtMacros.txt b/source/CMake/CMakeQtMacros.txt
deleted file mode 100644
index c5f5ea5ae..000000000
--- a/source/CMake/CMakeQtMacros.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-#####################################################################
-###   DARF ERST  - N A C H - PROJECT BEFEHL VEINGEBUNDEN WERDEN     #
-#####################################################################
-IF(NOT CMAKE_CXX_COMPILER)
-      MESSAGE(FATAL_ERROR "before SET_CAB_COMPILER-Macro PROJECT-Macro has to be called")
-ENDIF()
-#####################################################################
-###   OKAY, WENN  CMAKE_CXX_COMPILER gesetzte, dann wurd Project ausgefuehrt
-#####################################################################
-
-SET(NEED_QT "YES")
-
-IF(NOT QT_FOUND)
-   SET(QT_REQUIRED TRUE)
-   INCLUDE(${CMAKE_ROOT}/Modules/FindQt.cmake)
-ENDIF(NOT QT_FOUND)
-
-################################################################
-###                  QT_IMAGE_COLLECTION                     ###
-################################################################
-MACRO(QT_IMAGE_COLLECTION project output_file)
-  FOREACH(image ${ARGN})
-    #SET(image_collection ${image_collection} ${CMAKE_CURRENT_SOURCE_DIR}/${image})
-    SET(image_collection ${image_collection} ${image})
-  ENDFOREACH(image ${ARGN})
-  ADD_CUSTOM_COMMAND(
-                     #OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${output_file}
-                     OUTPUT  ${output_file}
-                     COMMAND ${QT_UIC_EXECUTABLE}
-                     #ARGS -embed ${project} -o ${CMAKE_CURRENT_BINARY_DIR}/${output_file} ${image_collection}
-                     ARGS -embed ${project} -o ${output_file} ${image_collection}
-                     DEPENDS ${image_collection}
-                    )
-  SET(GENERATED_FILES ${GENERATED_FILES} ${output_file}) 
-ENDMACRO(QT_IMAGE_COLLECTION)
-
-################################################################
-###                     QT_WRAP_CPP3                         ###
-### QT_WRAP_CPP3 outdirectory outfiles infileList)           ###
-################################################################
-MACRO(QT_WRAP_CPP3 outdirectory outfiles)
-  MAKE_DIRECTORY(outdirectory)
-  FOREACH(infile ${ARGN}) #ARGN is infiles-list!!!
-    GET_FILENAME_COMPONENT(outname ${infile} NAME_WE)
-    SET(outfile ${outdirectory}/${outname}MOC.cpp)
-    ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
-		       PRE_BUILD
-                       COMMAND ${QT_MOC_EXECUTABLE}
-                       ARGS -o ${outfile} ${infile}
-                       MAIN_DEPENDENCY ${infile})
-    SET(${outfiles} ${${outfiles}} ${outfile})
-  ENDFOREACH(infile ${infiles})
-  SET(GENERATED_FILES ${GENERATED_FILES} ${${outfiles}}) 
-ENDMACRO(QT_WRAP_CPP3)
-
-################################################################
-###                     QT_WRAP_UI3                          ###
-### QT_WRAP_UI3(houtdir   cppoutdir   mocoutdir              ###
-###             houtfiles cppoutfiles mocoutfiles)           ###
-###             infileList(=.ui files)             )         ###
-################################################################
-MACRO(QT_WRAP_UI3 houtdir cppoutdir mocoutdir houtfiles cppoutfiles mocoutfiles)
-  FOREACH(infile ${ARGN}) #ARGN is infiles-list!!!
-    GET_FILENAME_COMPONENT(filename_we ${infile} NAME_WE)
-    ########## HEADER ######################################
-    SET(houtfile ${houtdir}/${filename_we}.h)
-    ADD_CUSTOM_COMMAND(OUTPUT  ${houtfile}
-                       PRE_BUILD
-                       COMMAND ${QT_UIC_EXECUTABLE}
-                       ARGS -o ${houtfile} ${infile}
-                       DEPENDS ${infile}
-    )
-    SET(${houtfiles} ${${houtfiles}} ${houtfile})
-    ########## CPP #########################################
-    SET(cppoutfile ${cppoutdir}/${filename_we}.cpp)
-    ADD_CUSTOM_COMMAND(OUTPUT  ${cppoutfile}
-                       PRE_BUILD
-                       COMMAND ${QT_UIC_EXECUTABLE}
-                       ARGS ${infile} -i ${houtfile} -o ${cppoutfile}
-                       DEPENDS ${infile}
-    )
-    SET(${cppoutfiles} ${${cppoutfiles}} ${cppoutfile})
-    ########## MOC #########################################
-    SET(mocoutfile ${mocoutdir}/${filename_we}MOC.cpp)
-    ADD_CUSTOM_COMMAND(OUTPUT ${mocoutfile}
-                       PRE_BUILD
-                       COMMAND ${QT_MOC_EXECUTABLE}
-                       ARGS -o ${mocoutfile} ${houtfile}
-                       MAIN_DEPENDENCY ${houtfile})
-    SET(${mocoutfiles} ${${mocoutfiles}} ${mocoutfile})
-  ENDFOREACH(infile ${infiles})
-  SET(GENERATED_FILES ${GENERATED_FILES} ${${houtfiles}} ${${cppoutfiles}} ${${mocoutfiles}}) 
-ENDMACRO(QT_WRAP_UI3)
-
-####################################################################
-###                 QT4_WRAP_RESOURCES                           ###
-### QT4_WRAP_RESOURCES(resourcename oQRCFile oCPPFile bildfiles) ###
-####################################################################
-MACRO(QT4_WRAP_RESOURCES resourcename oQRCFile oCPPFile)
-  FOREACH(image ${ARGN}) #ARGN is infiles-list!!!
-    GET_FILENAME_COMPONENT(OUTDIR ${image} PATH)
-  ENDFOREACH(image ${ARGN})
-  
-  SET(${oQRCFile} ${OUTDIR}/${resourcename}.qrc)
-  
-  FILE(WRITE ${${oQRCFile}} "<!DOCTYPE RCC>\n<RCC>\n <qresource>\n")
-  FOREACH(image ${ARGN}) #ARGN is infiles-list!!!
-    GET_FILENAME_COMPONENT(image ${image} NAME)
-    FILE(APPEND ${${oQRCFile}} "<file>${image}</file>\n")
-  ENDFOREACH(image ${ARGN})
-  FILE(APPEND ${${oQRCFile}} "</qresource>\n</RCC>")
-
-  GET_FILENAME_COMPONENT(filename_we ${${oQRCFile}} NAME_WE)
- 
-  SET(${oCPPFile} ${OUTDIR}/${filename_we}_QRC.cpp)
-  ADD_CUSTOM_COMMAND(OUTPUT ${${oCPPFile}}
-                     PRE_BUILD
-                     COMMAND ${QT_RCC_EXECUTABLE}
-                     ARGS -name "${filename_we}" -no-compress ${${oQRCFile}} -o ${${oCPPFile}}
-                     MAIN_DEPENDENCY ${${oQRCFile}} ${${imagefiles}})
-  SET(GENERATED_FILES ${GENERATED_FILES} ${${oCPPFile}}) 
-  #SET(GENERATED_FILES ${GENERATED_FILES} ${${oQRCFile}} ) wenn man es hier rauslöscht muss man jedes mal cmake aufrufen nach clean all um es zu erzeugen :(
-ENDMACRO(QT4_WRAP_RESOURCES)
-
-################################################################
-###                     QT4_WRAP_UI                          ###
-### QT4_WRAP_UI(outdir outfiles infileList(=.ui files))      ###
-### example:                                                 ###
-###   input:    TestClass.ui                                 ###
-###   outfiles: outdir/TestClass.h (generated if not exist)  ###
-###             outdir/TestClassUI.h                         ###
-###             outdir/TestClassMOC.cpp                      ### 
-################################################################
-MACRO(QT4_WRAP_UI outdir outfiles)
-  SET(${outfiles} )  #empty outfiles
-  SET(houtfiles )    #just empty the variable!
-
-  FOREACH(infile ${ARGN}) #ARGN is infiles-list!!!
-    GET_FILENAME_COMPONENT(filename_we ${infile} NAME_WE)
-
-    ########## UI_HEADER ######################################
-    SET(ui_houtfile ${outdir}/${QT_GEN_DIR}/${filename_we}UI.h)
-    STRING(REGEX REPLACE "//" "/" ui_houtfile ${ui_houtfile}) #doppeltes // entfernen bei nicht gesetztem QT_GEN_DIR
-  
-    ADD_CUSTOM_COMMAND( OUTPUT  ${ui_houtfile}
-                        PRE_BUILD
-                        COMMAND ${QT_UIC_EXECUTABLE}
-                        ARGS -o ${ui_houtfile} ${infile}
-                        MAIN_DEPENDENCY ${infile}
-                       )
-    SET(${outfiles} ${${outfiles}} ${ui_houtfile})
-    
-    ########## HEADER ######################################
-    SET(houtfile ${outdir}/${filename_we}.h)
-    IF(NOT EXISTS ${houtfile})
-       FILE(WRITE ${houtfile} "#ifndef ${filename_we}_H\n#define ${filename_we}_H\n\n")
-       FILE(APPEND ${houtfile} "#include \"${filename_we}UI.h\"\n\n")
-       FILE(APPEND ${houtfile} "class ${filename_we} : public QWidget \n")
-       FILE(APPEND ${houtfile} "{\n\n   Q_OBJECT\n\npublic:\n ${filename_we}()\n")
-       FILE(APPEND ${houtfile} "   {\n      ui.setupUi(this);\n   }\n\n")
-       FILE(APPEND ${houtfile} "protected:\n\n")
-       FILE(APPEND ${houtfile} "private:\nUi::${filename_we} ui;\n\n};\n\n")
-       FILE(APPEND ${houtfile} "#endif\n")
-    ENDIF(NOT EXISTS ${houtfile})
-    SET(houtfiles ${houtfiles}  ${houtfile})
-    
-    ########## MOC-CPP #####################################
-    SET(mocfile ${outdir}/${QT_GEN_DIR}/${filename_we}MOC.cpp)
-    STRING(REGEX REPLACE "//" "/" mocfile ${mocfile}) #doppeltes // entfernen bei nicht gesetztem QT_GEN_DIR
-    IF(WIN32)
-      ADD_CUSTOM_COMMAND(OUTPUT ${mocfile}
-                         PRE_BUILD
-                         COMMAND ${QT_MOC_EXECUTABLE}
-                         ARGS -o ${mocfile} ${houtfile}
-                         MAIN_DEPENDENCY ${ui_houtfile} ${houtfile} 
-                        )
-    ELSE(WIN32)  #weil sonst xxxUI.h unter Linux nicht erstellt wird!!!
-      ADD_CUSTOM_COMMAND(OUTPUT ${mocfile}
-                         PRE_BUILD
-                         COMMAND ${QT_MOC_EXECUTABLE}
-                         ARGS -o ${mocfile} ${houtfile}
-                         MAIN_DEPENDENCY  ${houtfile} ${ui_houtfile}
-                        )
-    ENDIF(WIN32)
-    SET(${outfiles} ${${outfiles}} ${mocfile})
-  ENDFOREACH(infile ${infiles})
-  
-  SET(GENERATED_FILES ${GENERATED_FILES} ${${outfiles}} ) 
-  SET(${outfiles} ${${outfiles}} ${houtfiles})
-ENDMACRO(QT4_WRAP_UI)
-
-################################################################
-###                     QT4_WRAP_CPP                         ###
-### QT4_WRAP_CPP(outdirectory outfiles infileList)           ###
-################################################################
-MACRO(QT4_WRAP_CPP outdir outfiles)
-  FOREACH(infile ${ARGN}) #ARGN is infiles-list!!!
-    GET_FILENAME_COMPONENT(outname ${infile} NAME_WE)
-    SET(outfile ${outdir}/${outname}MOC.cpp)
-    ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
-		       PRE_BUILD
-                       COMMAND ${QT_MOC_EXECUTABLE}
-                       ARGS -o ${outfile} ${infile}
-                       MAIN_DEPENDENCY ${infile})
-    #SET(${outfiles} ${${outfiles}} ${outfile})
-    SET(${outfiles} "${${outfiles}}" "${outfile}")
-  ENDFOREACH(infile ${infiles})
-  SET(GENERATED_FILES ${GENERATED_FILES} ${${outfiles}}) 
-ENDMACRO(QT4_WRAP_CPP)
-
-
-################################################################
-###               QT4_GET_TOBEMOCED_HEADERS                  ###
-### QT4_GET_TOBEMOCED_HEADERS(toBeMocedFiles infileList)     ###
-################################################################
-MACRO(QT4_GET_TOBEMOCED_HEADERS toBeMocedFiles)
-   SET(${toBeMocedFiles} "")
-   FOREACH(infile ${ARGN}) #ARGN is infiles-list!!!
-      FILE(READ "${infile}" file)
-      #STRING(REGEX MATCH Q_OBJECT check ${file})
-      STRING(REGEX MATCH "Q_OBJECT" check "${file}")
-      IF(${check} MATCHES "Q_OBJECT")
-         SET(${toBeMocedFiles} ${${toBeMocedFiles}}  ${infile})
-      ENDIF(${check} MATCHES "Q_OBJECT")
-  ENDFOREACH(infile ${infiles})
-ENDMACRO(QT4_GET_TOBEMOCED_HEADERS)
-
-#################################################################################
-###   COLLECT_QT_PACKAGE_DATA( currentDir  sourceGroupName outFiles)          ###
-### collects header and cpp file of current dir and add them to "outfiles"    ###
-### collects ui and Q_OBJECT files and adds build rules                       ###
-### all files will be put to the SOURCE_GROUP-folder "sourceGroupName"        ###
-### and this one will be with subfolders if  WITH_SUBFOLDERS_FOR_SG==YES      ###
-### all generated files will be added to a spefic folder QT_GEN_DIR           ###
-#################################################################################
-MACRO(COLLECT_QT_PACKAGE_DATA currentDir sourceGroupName outFiles)
-  IF(QT_GEN_DIR)
-    #stellt sicher, dass QT_GEN_DIR mit slash am Anfang
-    STRING(REGEX REPLACE "/" "" QT_GEN_DIR "${QT_GEN_DIR}")
-    SET(QT_GEN_DIR "/${QT_GEN_DIR}")
-  ENDIF()
-
-  FILE(GLOB QT_PACKAGE_HEADER_FILES ${currentDir}/*.h   )
-  FILE(GLOB QT_PACKAGE_CPP_FILES    ${currentDir}/*.cpp )
-  FILE(GLOB QT_PACKAGE_CXX_FILES    ${currentDir}/*.cxx )
-  FILE(GLOB QT_PACKAGE_HPP_FILES    ${currentDir}/*.hpp )
-  FILE(GLOB QT_PACKAGE_C_FILES    ${currentDir}/*.c) 
-
-  IF(NOT NEED_VTK)
-    FILE(GLOB VTK_FILES ${currentDir}/*vtk*  )
-    REMOVE(QT_PACKAGE_HEADER_FILES ${VTK_FILES} )
-    REMOVE(QT_PACKAGE_CPP_FILES    ${VTK_FILES} )
-    REMOVE(QT_PACKAGE_CXX_FILES    ${VTK_FILES} )
-    REMOVE(QT_PACKAGE_C_FILES      ${VTK_FILES} )
-    REMOVE(QT_PACKAGE_HPP_FILES    ${VTK_FILES} )
-  ENDIF(NOT NEED_VTK)
-  
-  IF(CAB_PACKAGE_DEFINTIONS)
-    SET_SOURCE_FILES_PROPERTIES(${QT_PACKAGE_CPP_FILES} PROPERTIES COMPILE_FLAGS ${CAB_PACKAGE_DEFINTIONS})
-    SET_SOURCE_FILES_PROPERTIES(${QT_PACKAGE_CXX_FILES} PROPERTIES COMPILE_FLAGS ${CAB_PACKAGE_DEFINTIONS})
-  ENDIF(CAB_PACKAGE_DEFINTIONS)
-  
-  SET(TEMP_FILES) #emty TEMP_FILES
-  SET(TEMP_FILES ${QT_PACKAGE_HEADER_FILES} ${QT_PACKAGE_CPP_FILES} ${QT_PACKAGE_CXX_FILES} ${QT_PACKAGE_C_FILES} ${QT_PACKAGE_HPP_FILES})
-  CAB_SOURCE_GROUP(${sourceGroupName} ${TEMP_FILES})
-  
-  IF(QT_FOUND)
-    ################################################################
-    ###         Qt4      Resources                               ###
-    ################################################################
-    FILE(GLOB IMAGES ${currentDir}/*.png
-                     ${currentDir}/*.jpg
-                     ${currentDir}/*.gif
-                     ${currentDir}/*.bmp )
-
-    IF(IMAGES)
-      #dynamische resourcename-filename bestimmung...
-      SET(RESOURCENAMELIST ${currentDir})
-      STRING(REGEX REPLACE "/" ";" RESOURCENAMELIST "${RESOURCENAMELIST}")
-      LIST(LENGTH RESOURCENAMELIST INDEX) 
-      MATH(EXPR INDEX "${INDEX}-2")     
-      LIST(GET RESOURCENAMELIST ${INDEX} RESOURCENAME)
-      IF(${RESOURCENAME} STREQUAL "presentation")
-         MATH(EXPR INDEX "${INDEX}-1")     
-         LIST(GET RESOURCENAMELIST ${INDEX} RESOURCENAME)
-      ENDIF()
-      #und nu geht das los
-
-      QT4_WRAP_RESOURCES(${RESOURCENAME} qrcfile cppfile ${IMAGES})
-      
-      REMOVE(TEMP_FILES ${cppfile} )
-      SET(TEMP_FILES ${TEMP_FILES} ${cppfile})
-      CAB_SOURCE_GROUP(${sourceGroupName} ${cppfile})
-
-      IF(WIN32)
-        SET(${outFiles} ${${outFiles}} ${qrcfile})
-        CAB_SOURCE_GROUP(${sourceGroupName} ${qrcfile})
-      ENDIF(WIN32)
-    ENDIF(IMAGES)
-    
-    ################################################################
-    ###         Qt4      UI FILES                                ###
-    ################################################################
-    FILE(GLOB UI_FILES ${currentDir}/*.ui)            #collect ui files
-    IF(UI_FILES)
-      MAKE_DIRECTORY(${currentDir}${QT_GEN_DIR})
-      QT4_WRAP_UI(${currentDir} OUTFILES ${UI_FILES})   #wrap ui files
-      REMOVE(TEMP_FILES ${OUTFILES} )
-      SET(TEMP_FILES ${TEMP_FILES} ${OUTFILES} )
-      
-      CAB_SOURCE_GROUP(${sourceGroupName} ${OUTFILES})
-      
-      #add generated directory to include path
-      INCLUDE_DIRECTORIES( ${currentDir}${QT_GEN_DIR} )
-
-      IF(WIN32)
-        SET(${outFiles} ${${outFiles}} ${UI_FILES})
-        CAB_SOURCE_GROUP(${sourceGroupName} ${UI_FILES})
-      ENDIF(WIN32)
-    ENDIF(UI_FILES)
-    
-    ################################################################
-    ###       Qt4        HEADERS TO BE MOCED                     ###
-    ################################################################
-    SET(HEADER_FILES_FOR_MOCCHECK ${QT_PACKAGE_HEADER_FILES})
-    
-    #remove header files that are allready processed by QT4_WRAP_UI
-    REMOVE(HEADER_FILES_FOR_MOCCHECK ${OUTFILES} )
-    
-    QT4_GET_TOBEMOCED_HEADERS(MOC_CLASSES ${HEADER_FILES_FOR_MOCCHECK})
-    IF(MOC_CLASSES)    
-      MAKE_DIRECTORY(${currentDir}${QT_GEN_DIR})
-      SET(MOC_FILES ) #empty MOC_FILES
-      QT4_WRAP_CPP(${currentDir}${QT_GEN_DIR} MOC_FILES ${MOC_CLASSES})
-      REMOVE(TEMP_FILES ${MOC_FILES})
-      SET(TEMP_FILES ${TEMP_FILES} ${MOC_FILES})
-      CAB_SOURCE_GROUP(${sourceGroupName} ${MOC_FILES})
-    ENDIF(MOC_CLASSES)
-    
-  ELSEIF(QT_FOUND)
-    MESSAGE("Could not collect Qt Package data.\n Qt was not found on your system.")
-  ENDIF(QT_FOUND)
-  
-  SET(${outFiles} ${${outFiles}} ${TEMP_FILES})
-ENDMACRO(COLLECT_QT_PACKAGE_DATA)
-
-##################################################################################################################
-###   COLLECT_QT_PACKAGE_DATA_WITH_OPTION( currentDir  sourceGroupName outFiles [outOption] [outSourceGroupName]) ###
-### collects header and cpp file of current dir and add them to "outfiles"                                     ###
-### all files will be put to the SOURCE_GROUP-folder "sourceGroupName"                                         ###
-### and this one will be with subfolders if  WITH_SUBFOLDERS_FOR_SG==YES                                       ###
-##################################################################################################################
-MACRO(COLLECT_QT_PACKAGE_DATA_WITH_OPTION currentDir outFiles)
-  STRING(REGEX REPLACE "(.*)/source/(.*)" "\\2" SOURCE_GROUP_NAME "${currentDir}")
-  STRING(REGEX REPLACE   "/" "_" OPTION_LABEL "${SOURCE_GROUP_NAME}")
-  STRING(REGEX REPLACE   ":" ""  OPTION_LABEL "${OPTION_LABEL}")
-  STRING(TOUPPER ${OPTION_LABEL} OPTION_LABEL)  
-  
-  SET(OPTION_LABEL "BUILD_${OPTION_LABEL}")
-  OPTION(${OPTION_LABEL} "${currentDir}" ON)
-
-  IF( ${OPTION_LABEL} ) 
-     COLLECT_QT_PACKAGE_DATA( ${currentDir} ${SOURCE_GROUP_NAME} ${outFiles})
-  ENDIF(${OPTION_LABEL})
-
-  IF(${ARGC} EQUAL 3)
-    SET( ${ARGV2} ${OPTION_LABEL} )
-  ENDIF()
-
-  IF(${ARGC} EQUAL 4)
-     SET( ${ARGV3} ${SOURCE_GROUP_NAME} )
-  ENDIF()
-  
-ENDMACRO(COLLECT_QT_PACKAGE_DATA_WITH_OPTION  currentDir outFiles)
\ No newline at end of file
diff --git a/source/CMake/CMakeRubyMacros.txt b/source/CMake/CMakeRubyMacros.txt
deleted file mode 100644
index e887105f3..000000000
--- a/source/CMake/CMakeRubyMacros.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-
-################################################################
-###               SET_RUBY_STUFF                             ###
-################################################################
-MACRO(SET_RUBY_STUFF )
-   IF(NOT RUBY_FOUND) 
-      FIND_PACKAGE(Ruby REQUIRED)
-   ENDIF()
-
-   IF(NOT RUBY_FOUND)
-      MESSAGE(FATAL_ERROR "SET_RUBY_STUFF::could not find RUBY")
-   ELSE()
-     STRING(REGEX REPLACE "([0-9]*).([0-9]*).([0-9]*)" "\\1" CAB_RUBY_VERSION_MAJOR ${RUBY_VERSION})
-     STRING(REGEX REPLACE "([0-9]*).([0-9]*).([0-9]*)" "\\2" CAB_RUBY_VERSION_MINOR ${RUBY_VERSION})
-     STRING(REGEX REPLACE "([0-9]*).([0-9]*).([0-9]*)" "\\3" CAB_RUBY_VERSION_PATCH ${RUBY_VERSION})
-
-     MATH(EXPR CAB_RUBY_VERSION "${CAB_RUBY_VERSION_MAJOR}*10000 + ${CAB_RUBY_VERSION_MINOR}*100 + ${CAB_RUBY_VERSION_PATCH}")
-     LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS "-DCAB_RUBY=${CAB_RUBY_VERSION}")
-     LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -DCAB_RUBY_EXECUTABLE=${RUBY_EXECUTABLE})
-
-     INCLUDE_DIRECTORIES( ${RUBY_INCLUDE_DIRS} )
-     SET(CAB_ADDITIONAL_LINK_LIBRARIES ${CAB_ADDITIONAL_LINK_LIBRARIES} ${RUBY_LIBRARY})
-   ENDIF()
-ENDMACRO(SET_RUBY_STUFF )
-
diff --git a/source/CMake/CMakeSetBoostStuff.txt b/source/CMake/CMakeSetBoostStuff.txt
deleted file mode 100644
index ad81d0530..000000000
--- a/source/CMake/CMakeSetBoostStuff.txt
+++ /dev/null
@@ -1,496 +0,0 @@
-# - Try to find Boost include dirs and libraries
-# Usage of this module as follows:
-#
-#     SET(BOOST_USE_STATIC_LIBS ON)
-#     SET(BOOST_USE_MULTITHREAD OFF)
-#     FIND_PACKAGE( Boost 1.34.1 COMPONENTS date_time filesystem iostreams ... )
-#
-# The BOOST_ADDITIONAL_VERSIONS variable can be used to specify a list of
-# boost version numbers that should be taken into account when searching
-# for the libraries. Unfortunately boost puts the version number into the
-# actual filename for the libraries, so this might be needed in the future
-# when new Boost versions are released.
-#
-# Currently this module searches for the following version numbers:
-# 1.33, 1.33.0, 1.33.1, 1.34, 1.34.0, 1.34.1, 1.35, 1.35.0, 1.35.1, 1.36.0,
-# 1.36.1, 1.37.0,1.38.0
-#
-# The components list needs to be the actual names of boost libraries, that is
-# the part of the actual library files that differ on different libraries. So
-# its "date_time" for "libBOOST_date_time...". Anything else will result in
-# errors
-#
-# You can provide a minimum version number that should be used. If you provide this 
-# version number and specify the REQUIRED attribute, this module will fail if it
-# can't find the specified or a later version. If you specify a version number this is
-# automatically put into the considered list of version numbers and thus doesn't need
-# to be specified in the BOOST_ADDITIONAL_VERSIONS variable
-#
-# Variables used by this module, they can change the default behaviour and need to be set
-# before calling find_package:
-#  BOOST_USE_MULTITHREAD         Can be set to OFF to use the non-multithreaded
-#                                boost libraries. Defaults to ON.
-#  BOOST_USE_STATIC_LIBS         Can be set to ON to force the use of the static
-#                                boost libraries. Defaults to OFF.
-#  BOOST_INCLUDEDIR              Set this to the include directory of Boost, if the
-#                                module has problems finding the proper Boost installation
-#  BOOST_LIBRARYDIR              Set this to the lib directory of Boost, if the
-#                                module has problems finding the proper Boost installation
-#  BOOST_AUTO_LIB_EXT_DETECTION  compiler suffix for boost libs will be detected automatically
-#                                (e.g. "-gcc33", "-il")
-#
-#  BOOST_LIB_COMPILER_EXTENSION  compiler suffix for boost libs (e.g. "-gcc33", "-il") 
-#                                (ONLY IF BOOST_AUTO_LIB_EXT_DETECTION is unset)
-#
-#
-# Variables defined by this module:
-#
-#  BOOST_FOUND                          System has Boost, this means the include dir was found,
-#                                       as well as all the libraries specified in the COMPONENTS list
-#  BOOST_LIBRARIES                      Link these to use the Boost libraries that you specified, not cached
-#  BOOST_FOUND_VERSION                  The version number of the boost libraries that have been found,
-#                                       same as in version.hpp from Boost
-#  BOOST_FOUND_LIB_VERSION              The version number in filename form as its appended to the library filenames
-#  BOOST_MAJOR_VERSION                  major version number of boost
-#  BOOST_MINOR_VERSION                  minor version number of boost
-#  BOOST_SUBMINOR_VERSION               subminor version number of boost
-#  BOOST_LIB_DIAGNOSTIC_DEFINITIONS     Only set on windows. Can be used with add_definitions 
-#                                       to print diagnostic information about the automatic 
-#                                       linking done on windows.
-
-# For each component you list the following variables are set.
-# ATTENTION: The component names need to be in lower case, just as the boost
-# library names however the cmake variables use upper case for the component
-# part. So you'd get BOOST_SERIALIZATION_FOUND for example.
-#
-#  BOOST_${COMPONENT}_FOUND             True IF the Boost library "component" was found.
-#  BOOST_${COMPONENT}_LIBRARY           The absolute path of the Boost library "component".
-#  BOOST_${COMPONENT}_LIBRARY_DEBUG     The absolute path of the debug version of the
-#                                       Boost library "component".
-#  BOOST_${COMPONENT}_LIBRARY_RELEASE   The absolute path of the release version of the
-#                                       Boost library "component"
-#
-
-# this module required CMake 2.5 for the BOOST_FIND_VERSION stuff
-#CMAKE_MINIMUM_REQUIRED(VERSION "2.6" FATAL_ERROR)
-SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS 1)
-
-
-###########################################################################
-# das folgende macro sucht alle Header aus toBeIncludedFiles files nach
-# SF::register< XXX >("XXX") durch und stellt anhand dieser informationen 
-# eine Include Datei zusammen, die man benoetigt um boost serialization mit 
-# abgeleiteten Klassen zu verwenden
-###########################################################################
-MACRO( CREATE_BOOST_EXPORT_FILE toBeIncludedFiles )
-
-  ##################################################
-  # clear cars
-  ##################################################
-  SET(includeFiles   "")
-  SET(derivedClasses "")
-  
-  ##################################################
-  #find all classes and files for boost macro
-  ##################################################
-
-  FOREACH(infile ${toBeIncludedFiles}) #ARGN is infiles-list!!!
-    GET_FILENAME_COMPONENT(fileext ${infile} EXT)
-
-    IF("${fileext}" STREQUAL ".h")
-      FILE(READ "${infile}" file) #kopier kompletten dateiinhalt in variable "file"
-      SET(className "")
-      SET(isIncludeFile FALSE)
-      
-      while(NOT className STREQUAL file)
-         STRING(REGEX REPLACE ".*SF\\:\\:registerType<[ ]*(.*)[ ]*>[ ]*\\([ ]*\".*" "\\1" className "${file}")
- 
-        IF(NOT className STREQUAL file) #wenn nichts zu ersetzen ist.. -> steht in className wieder komplettes file
-             #check ob Klasse abstrakt //MUSS MAN NICHT MACHEN
-             #STRING(REGEX MATCH "SF_NO_CTOR\\([ ]*${className}[ ]*\\)" abstractCheck "${file}")
-             STRING(REGEX REPLACE "(.*)SF\\:\\:registerType<[ ]*${className}[ ]*>\\(.*" "\\1" file "${file}")
-             
-             #IF(NOT abstractCheck)
-               SET(derivedClasses ${derivedClasses} ${className} )
-               SET(isIncludeFile TRUE)
-             #ENDIF()
-         ENDIF()
-
-      ENDWHILE()
-
-      IF(isIncludeFile)
-        SET(includeFiles ${includeFiles} ${infile} )
-      ENDIF()
-    ENDIF()  
-  ENDFOREACH(infile ${infiles})
-
-  ##################################################
-  # update main if necessary
-  # (hier wird u.a. das BoostExportFile.h erzeugt)
-  ##################################################
-  FOREACH(infile ${ARGN}) 
-    STRING(REGEX MATCH ".*main.cpp" myMain ${infile} )
-    IF(myMain)
-      GET_FILENAME_COMPONENT(myMainPath ${myMain} PATH)
-      SET(boostExportFile "${myMainPath}/BoostExportFile.h")
-    
-      #shorten boost-exportFileName
-      STRING(REGEX REPLACE "\\\\" "/" file "${boostExportFile}")       
-      STRING(REGEX REPLACE "${SOURCE_ROOT}/(.*)" "\\1" file "${boostExportFile}")
-
-      #split main
-      FILE(READ "${myMain}" myMainContent)
-
-      SET(newLines "//inserted by CMake\n#ifdef RCF_USE_BOOST_SERIALIZATION\n")
-      SET(newLines "${newLines}  #include \"./BoostExportFile.h\"\n")
-      SET(newLines "${newLines}#endif //RCF_USE_BOOST_SERIALIZATION\n//\n// insert nothing here (will be deleted by CMake)\n//\n")
-      
-      STRING(REGEX MATCH "#include \"./BoostExportFile.h\"" check "${myMainContent}")       
-
-      IF(NOT check)
-        #ALLES VOR //inserted by CMake in firstPartMain speichern buw alles vor main
-		  STRING(REGEX MATCH "//inserted by CMake" check "${myMainContent}")       
-        IF(check) 
-			 SET( firstPartMain ${myMainContent} )
-          WHILE(check)
-				STRING(REGEX REPLACE "(.*)//inserted by CMake(.*)" "\\1" firstPartMain  "${firstPartMain}")
-				STRING(REGEX MATCH "//inserted by CMake" check "${firstPartMain}")       
-          ENDWHILE()
-        ELSE()
-          STRING(REGEX REPLACE "(.*)int main\\((.*)" "\\1" firstPartMain  "${myMainContent}")       
-        ENDIF()
-        STRING(REGEX REPLACE "(.*)int main\\((.*)" "\\2" secondPartMain "${myMainContent}")       
-        #write new extended main
-        FILE(WRITE  ${myMain} "${firstPartMain}")
-        FILE(APPEND ${myMain} "${newLines}")
-        FILE(APPEND ${myMain} "int main(")
-        FILE(APPEND ${myMain} "${secondPartMain}")
-      ENDIF()
-    ENDIF()
-  ENDFOREACH()
-
-  ##################################################
-  # generate include file
-  ##################################################
-  IF(boostExportFile)
-      SET(boostExportFile_tmp ${boostExportFile}_tmp)
-      FILE(WRITE  ${boostExportFile_tmp} "//File is automatic generated by CMake::SET_BOOST_STUFF \n")
-      FILE(APPEND ${boostExportFile_tmp} "//do not change anything! SirAnn \n")
-      FILE(APPEND ${boostExportFile_tmp} "#ifndef CAB_BOOST_EXPORT\n")
-      FILE(APPEND ${boostExportFile_tmp} "#define CAB_BOOST_EXPORT\n\n")
-      FILE(APPEND ${boostExportFile_tmp} "  #ifdef RCF_USE_BOOST_SERIALIZATION\n\n")
-    
-      FOREACH(file ${includeFiles}) 
-        STRING(REGEX REPLACE "\\\\" "/" file "${file}")  
-        STRING(REGEX REPLACE "${SOURCE_ROOT}/(.*)" "\\1" file "${file}")
-        FILE(APPEND ${boostExportFile_tmp} "    #include<${file}>\n")
-      ENDFOREACH()
-    
-    	FILE(APPEND ${boostExportFile_tmp} "\n")
-    
-    	FILE(APPEND ${boostExportFile_tmp} "    #include <boost/serialization/export.hpp>\n")
-    	FILE(APPEND ${boostExportFile_tmp} "    #include <boost/serialization/void_cast.hpp>\n\n")
-
-    	FOREACH(className ${derivedClasses}) 
-    	  FILE(APPEND ${boostExportFile_tmp} "    BOOST_CLASS_EXPORT_GUID( ${className}, \"${className}\" )\n")
-    	ENDFOREACH()
-    
-    	FILE(APPEND ${boostExportFile_tmp} "\n  #endif //RCF_USE_BOOST_SERIALIZATION\n")
-    	FILE(APPEND ${boostExportFile_tmp} "#endif //CAB_BOOST_EXPORT\n")
-
-    	#compare
-    	SET(schonDa FALSE)
-    	FILE(READ ${boostExportFile_tmp} tmp)
-          
-    	IF(EXISTS ${boostExportFile})
-    	  FILE(READ ${boostExportFile}       org)
-    	  STRING(COMPARE EQUAL ${org} ${tmp} schonDa)
-    	ENDIF()
-
-    	IF(NOT schonDa)
-      	FILE(WRITE  ${boostExportFile} ${tmp})
-      	SOURCE_GROUP(generated_file FILES ${boostExportFile})
-      	LIST(APPEND ${boostExportFile} )
-    	ENDIF()
-    
-    	FILE(REMOVE ${boostExportFile_tmp})
-      
-  	ENDIF()
-
-ENDMACRO( CREATE_BOOST_EXPORT_FILE toBeIncludedFiles )
-
-
-############################################
-#
-# Check the existence of the libraries.
-#
-#########################################################################
-# This macro was taken directly from the FindQt4.cmake file that is included
-# with the CMake distribution. This is NOT my work. All work was done by the
-# original authors of the FindQt4.cmake file. Only minor modifications were
-# made to remove references to Qt and make this file more generally applicable
-#########################################################################
-MACRO(BOOST_ADJUST_LIB_VARS basename)
-  IF (BOOST_${basename}_LIBRARY_DEBUG AND BOOST_${basename}_LIBRARY_RELEASE)
-      # if the generator supports configuration types then set
-      # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value
-      IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-        SET(BOOST_${basename}_LIBRARY optimized ${BOOST_${basename}_LIBRARY_RELEASE} debug ${BOOST_${basename}_LIBRARY_DEBUG})
-      ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-        # if there are no configuration types and CMAKE_BUILD_TYPE has no value
-        # then just use the release libraries
-        SET(BOOST_${basename}_LIBRARY ${BOOST_${basename}_LIBRARY_RELEASE} )
-      ENDIF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-      SET(BOOST_${basename}_LIBRARIES optimized ${BOOST_${basename}_LIBRARY_RELEASE} debug ${BOOST_${basename}_LIBRARY_DEBUG})
-    ENDIF (BOOST_${basename}_LIBRARY_DEBUG AND BOOST_${basename}_LIBRARY_RELEASE)
-
-    # if only the release version was found, set the debug variable also to the release version
-    IF (BOOST_${basename}_LIBRARY_RELEASE AND NOT BOOST_${basename}_LIBRARY_DEBUG)
-      SET(BOOST_${basename}_LIBRARY_DEBUG ${BOOST_${basename}_LIBRARY_RELEASE})
-      SET(BOOST_${basename}_LIBRARY       ${BOOST_${basename}_LIBRARY_RELEASE})
-      SET(BOOST_${basename}_LIBRARIES     ${BOOST_${basename}_LIBRARY_RELEASE})
-    ENDIF (BOOST_${basename}_LIBRARY_RELEASE AND NOT BOOST_${basename}_LIBRARY_DEBUG)
-
-    # if only the debug version was found, set the release variable also to the debug version
-    IF (BOOST_${basename}_LIBRARY_DEBUG AND NOT BOOST_${basename}_LIBRARY_RELEASE)
-      SET(BOOST_${basename}_LIBRARY_RELEASE ${BOOST_${basename}_LIBRARY_DEBUG})
-      SET(BOOST_${basename}_LIBRARY         ${BOOST_${basename}_LIBRARY_DEBUG})
-      SET(BOOST_${basename}_LIBRARIES       ${BOOST_${basename}_LIBRARY_DEBUG})
-    ENDIF (BOOST_${basename}_LIBRARY_DEBUG AND NOT BOOST_${basename}_LIBRARY_RELEASE)
-    
-    IF (BOOST_${basename}_LIBRARY)
-      SET(BOOST_${basename}_LIBRARY ${BOOST_${basename}_LIBRARY} CACHE FILEPATH "The Boost ${basename} library")
-      GET_FILENAME_COMPONENT(BOOST_LIBRARYDIRS "${BOOST_${basename}_LIBRARY}" PATH)
-      SET(BOOST_${basename}_FOUND ON CACHE INTERNAL "Was the boost boost ${basename} library found")
-    ENDIF (BOOST_${basename}_LIBRARY)
-
-  # Make variables changeble to the advanced user
-  MARK_AS_ADVANCED(
-      BOOST_${basename}_LIBRARY
-      BOOST_${basename}_LIBRARY_RELEASE
-      BOOST_${basename}_LIBRARY_DEBUG
-  )
-ENDMACRO(BOOST_ADJUST_LIB_VARS)
-
-
-##################################################
-##################################################
-##################################################
-##################################################
-MACRO(SET_BOOST_STUFF )
-  	SET(BOOST_FOUND FALSE)
-  
-  	CHECK_FOR_VARIABLE(BOOST_VERSION         "1.37.0 1.36.0 1.35.0, 1.34.1, 1.34.1")
-  	IF(BOOST_VERSION)
-		CHECK_FOR_VARIABLE(BOOST_INCLUDEDIR      "BOOST_INCLUDEDIR floders that includes /boost/version.hpp")
-		CHECK_FOR_VARIABLE(BOOST_LIBRARYDIR      "BOOST_LIBRARYDIR floders that includes libs")
-		CHECK_FOR_VARIABLE(BOOST_USE_MULTITHREAD "BOOST_USE_MULTITHREAD ON/OFF")
-		CHECK_FOR_VARIABLE(BOOST_USE_STATIC_LIBS "BOOST_USE_STATIC_LIBS ON/OFF")                     
-  	ELSE()
-    	MESSAGE(FATAL_ERROR "BOOST_VERSION setzen, aber zackig!")
-  	ENDIF()
-                                                                                                  
-  	IF(BOOST_INCLUDEDIR AND BOOST_LIBRARYDIR)
-    	IF(EXISTS ${BOOST_INCLUDEDIR} AND EXISTS ${BOOST_LIBRARYDIR})
-     	 	IF(WIN32)
-	        # In windows, automatic linking is performed, so you do not have to specify the libraries.
-	        # If you are linking to a dynamic runtime, then you can choose to link to either a static or a
-	        # dynamic Boost library, the default is to do a static link.  You can alter this for a specific
-	        # library "whatever" by defining BOOST_WHATEVER_DYN_LINK to force Boost library "whatever" to
-	        # be linked dynamically.  Alternatively you can force all Boost libraries to dynamic link by
-	        # defining BOOST_ALL_DYN_LINK.
-	     
-	        # This feature can be disabled for Boost library "whatever" by defining BOOST_WHATEVER_NO_LIB,
-	        # or for all of Boost by defining BOOST_ALL_NO_LIB.
-	     
-	        # If you want to observe which libraries are being linked against then defining
-	        # BOOST_LIB_DIAGNOSTIC will cause the auto-linking code to emit a #pragma message each time
-	        # a library is selected for linking.
-                SET(BOOST_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC" CACHE STRING "Boost diagnostic define")
-      	ENDIF()
-      
-	      # Extract BOOST_FOUND_VERSION and BOOST_FOUND_LIB_VERSION from version.hpp
-	      # Read the whole file:
-	      #
-	      # Extract Boost_VERSION and BOOST_FOUND_LIB_VERSION from version.hpp
-	      # Read the whole file:
-	      #
-	      SET(BOOST_FOUND_VERSION 0)
-	      SET(BOOST_FOUND_LIB_VERSION "")
-	      FILE(READ "${BOOST_INCLUDEDIR}/boost/version.hpp" _BOOST_FOUND_VERSION_HPP_CONTENTS)
-	     
-	      STRING(REGEX REPLACE ".*#define BOOST_VERSION ([0-9]+).*" "\\1"          BOOST_FOUND_VERSION     "${_BOOST_FOUND_VERSION_HPP_CONTENTS}")
-	      STRING(REGEX REPLACE ".*#define BOOST_LIB_VERSION \"([0-9_]+)\".*" "\\1" BOOST_FOUND_LIB_VERSION "${_BOOST_FOUND_VERSION_HPP_CONTENTS}")
-	     
-	      IF(NOT "${BOOST_FOUND_VERSION}" STREQUAL "0")
-	        MATH(EXPR Boost_MAJOR_VERSION "${BOOST_FOUND_VERSION} / 100000")
-	        MATH(EXPR Boost_MINOR_VERSION "${BOOST_FOUND_VERSION} / 100 % 1000")
-	        MATH(EXPR Boost_SUBMINOR_VERSION "${BOOST_FOUND_VERSION} % 100")
-	      ENDIF(NOT "${BOOST_FOUND_VERSION}" STREQUAL "0")
-    
-	      SET(BOOST_FOUND_VERSION     ${BOOST_FOUND_VERSION}     CACHE INTERNAL "The version number for boost libraries")
-	      SET(BOOST_FOUND_LIB_VERSION ${BOOST_FOUND_LIB_VERSION} CACHE STRING "The library version string for boost libraries" FORCE)
-	      SET(BOOST_FOUND_VERSION_NUM ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION} CACHE STRING "The version number for boost libraries" FORCE)
-      
-	      #Setting some more suffixes for the library
-	      SET (BOOST_LIB_PREFIX "lib")
-	      IF ( WIN32 AND NOT BOOST_USE_STATIC_LIBS )
-	        SET (BOOST_LIB_PREFIX "")
-	      ENDIF( )
-      
-			IF( BOOST_COMPILER_SUFFIX )
-				SET(BOOST_COMPILER ${BOOST_COMPILER_SUFFIX})
-         ELSE()
-	        	SET (BOOST_COMPILER "-gcc")
-	        	IF(MSVC70)
-	         	 SET (BOOST_COMPILER "-vc70")
-	        	ELSEIF(MSVC71)
-	          	SET(BOOST_COMPILER "-vc71")
-	        	ELSEIF(MSVC80)
-	          	SET(BOOST_COMPILER "-vc80")
-	        	ELSEIF(MSVC90)
-	          	SET(BOOST_COMPILER "-vc90")
-	        	ELSEIF(MSVC100)
-	          	SET(BOOST_COMPILER "-vc100")
-	        	ELSEIF(MINGW)
-	          	#EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE BOOST_COMPILER_VERSION)
-	          	#STRING(REGEX REPLACE ".* ([0-9])\\.([0-9])\\.[0-9] .*" "\\1\\2"
-	           	#BOOST_COMPILER_VERSION ${BOOST_COMPILER_VERSION})
-	          	SET (BOOST_COMPILER "-mgw${BOOST_COMPILER_VERSION}")
-	        	ELSEIF(CYGWIN)
-	         	SET (BOOST_COMPILER "-gcc")
-	        	ELSEIF(UNIX)
-	          IF (APPLE)
-	              SET (BOOST_COMPILER "")
-	          ELSE (APPLE)
-	            IF (NOT CMAKE_COMPILER_IS_GNUCC)
-	              # This is for the intel compiler
-	              SET (BOOST_COMPILER "-il")
-	            ELSE (NOT CMAKE_COMPILER_IS_GNUCC)
-	              #find out the version of gcc being used.
-	              EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
-	                            ARGS --version
-	                            OUTPUT_VARIABLE BOOST_COMPILER_VERSION
-	              	            )
-	               STRING(REGEX REPLACE ".* ([0-9])\\.([0-9])\\.[0-9] .*" "\\1\\2"
-	                      BOOST_COMPILER_VERSION ${BOOST_COMPILER_VERSION})
-	               SET (BOOST_COMPILER "-gcc${BOOST_COMPILER_VERSION}")
-	            	ENDIF (NOT CMAKE_COMPILER_IS_GNUCC)
-	          	ENDIF (APPLE)
-	        	ENDIF()
-	      ENDIF()
-
-	      IF( BOOST_USE_MULTITHREAD )
-	        SET (BOOST_MULTITHREADED "-mt")
-	      ELSE()
-	        SET (BOOST_MULTITHREADED "")
-	      ENDIF( )
-    
-	      SET( BOOST_STATIC_TAG "")
-	      IF (WIN32)
-	        IF(MSVC)
-	          SET (BOOST_ABI_TAG "g")
-	        ENDIF(MSVC)
-	        IF( BOOST_USE_STATIC_LIBS )
-	          SET( BOOST_STATIC_TAG "-s")
-	        ENDIF( BOOST_USE_STATIC_LIBS )
-	      ENDIF(WIN32)
-	      SET (BOOST_ABI_TAG "${BOOST_ABI_TAG}d")
-	      
-	      # ------------------------------------------------------------------------
-	      #  Begin finding boost libraries
-	      # ------------------------------------------------------------------------
-	      FOREACH(COMPONENT ${ARGN})
-	        STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
-	        SET( BOOST_${UPPERCOMPONENT}_LIBRARY "BOOST_${UPPERCOMPONENT}_LIBRARY-NOTFOUND" )
-	        SET( BOOST_${UPPERCOMPONENT}_LIBRARY_RELEASE "BOOST_${UPPERCOMPONENT}_LIBRARY_RELEASE-NOTFOUND" )
-	        SET( BOOST_${UPPERCOMPONENT}_LIBRARY_DEBUG "BOOST_${UPPERCOMPONENT}_LIBRARY_DEBUG-NOTFOUND")
-	      
-	        # Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
-	        SET( BOOST_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-	        IF( BOOST_USE_STATIC_LIBS AND WIN32)
-	            SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
-	        ENDIF( )
-	    
-	        IF( BOOST_USE_STATIC_LIBS AND NOT WIN32)
-	           SET(libExtension ".a") #irgendwie funzt CMAKE_FIND_LIBRARY_SUFFIXES unter unix nicht
-	        ENDIF( )
-	        IF( NOT BOOST_USE_STATIC_LIBS AND NOT WIN32)
-	           IF(APPLE)
-		           SET(libExtension ".dylib")
-	           ELSE(APPLE)
-		           SET(libExtension ".so") #irgendwie funzt CMAKE_FIND_LIBRARY_SUFFIXES unter unix nicht
-		        ENDIF(APPLE)
-	        ENDIF( )
-	    
-	       #MESSAGE(STATUS ${BOOST_LIB_PREFIX}boost_${COMPONENT}${BOOST_COMPILER}${BOOST_MULTITHREADED}-${BOOST_FOUND_LIB_VERSION}${libExtension})
-	       
-	        FIND_LIBRARY(BOOST_${UPPERCOMPONENT}_LIBRARY_RELEASE
-	                     NAMES  ${BOOST_LIB_PREFIX}boost_${COMPONENT}${BOOST_COMPILER}${BOOST_MULTITHREADED}-${BOOST_FOUND_LIB_VERSION}${libExtension}
-	                            ${BOOST_LIB_PREFIX}boost_${COMPONENT}${BOOST_COMPILER}${BOOST_MULTITHREADED}${BOOST_STATIC_TAG}-${BOOST_FOUND_LIB_VERSION}${libExtension}
-	                            ${BOOST_LIB_PREFIX}boost_${COMPONENT}${BOOST_MULTITHREADED}${libExtension}
-	                            ${BOOST_LIB_PREFIX}boost_${COMPONENT}${BOOST_MULTITHREADED}${BOOST_STATIC_TAG}${libExtension}
-	                            ${BOOST_LIB_PREFIX}boost_${COMPONENT}${libExtension}
-	                     PATHS  ${BOOST_LIBRARYDIR}
-	                     NO_DEFAULT_PATH
-	                   )
-	        FIND_LIBRARY(BOOST_${UPPERCOMPONENT}_LIBRARY_DEBUG
-	                     NAMES  ${BOOST_LIB_PREFIX}boost_${COMPONENT}${BOOST_COMPILER}${BOOST_MULTITHREADED}-${BOOST_ABI_TAG}-${BOOST_FOUND_LIB_VERSION}${libExtension}
-	                            ${BOOST_LIB_PREFIX}boost_${COMPONENT}${BOOST_COMPILER}${BOOST_MULTITHREADED}${BOOST_STATIC_TAG}${BOOST_ABI_TAG}-${BOOST_FOUND_LIB_VERSION${libExtension}}
-	                            ${BOOST_LIB_PREFIX}boost_${COMPONENT}${BOOST_MULTITHREADED}-${BOOST_ABI_TAG}${libExtension}
-	                            ${BOOST_LIB_PREFIX}boost_${COMPONENT}${BOOST_MULTITHREADED}${BOOST_STATIC_TAG}${BOOST_ABI_TAG}${libExtension}
-	                            ${BOOST_LIB_PREFIX}boost_${COMPONENT}-${BOOST_ABI_TAG}${libExtension}
-	                     PATHS  ${BOOST_LIBRARYDIR}
-	                     NO_DEFAULT_PATH
-	                    )
-	        
-	        BOOST_ADJUST_LIB_VARS(${UPPERCOMPONENT})
-	      
-	        SET(BOOST_LIBRARIES ${BOOST_LIBRARIES} ${BOOST_${UPPERCOMPONENT}_LIBRARY})
-	      
-	        SET(CMAKE_FIND_LIBRARY_SUFFIXES ${BOOST_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
-	      ENDFOREACH(COMPONENT ${ARGN})
-	      # ------------------------------------------------------------------------
-	      #  End finding boost libraries
-	      # ------------------------------------------------------------------------
-      
-	      ## BOOST_FOUND
-	      IF(BOOST_FOUND_VERSION)
-	        SET( BOOST_FOUND TRUE )
-	        LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -DCAB_BOOST=${BOOST_FOUND_VERSION})
-	      ENDIF()
-	      
-	      #Under Windows, automatic linking is performed, so no need to specify the libraries.
-	      IF(WIN32)
-	        	IF(NOT MINGW)
-	          SET(BOOST_LIBRARIES "")
-	        	ENDIF (NOT MINGW)
-	      ENDIF(WIN32)
-
-	      INCLUDE_DIRECTORIES( ${BOOST_INCLUDEDIR}  )
-	      LINK_DIRECTORIES( ${BOOST_LIBRARYDIR} )
-	      LINK_LIBRARIES ( ${BOOST_LIBRARIES} )
-    	ELSE()
-	      IF( NOT EXISTS ${BOOST_INCLUDEDIR} )
-     	   	MESSAGE("BOOST_INCLUDEDIR = \\""${BOOST_INCLUDEDIR}"\\" does not exist")
-	      ENDIF()
-
-	      IF( NOT EXISTS ${BOOST_LIBRARYDIR} )
-     	      MESSAGE("BOOST_LIBRARYDIR = \\""${BOOST_LIBRARYDIR}"\\" does not exist")
-	      ENDIF()
-    	ENDIF()
- 	ELSE() 
-   	IF(NOT BOOST_INCLUDEDIR)
-      	MESSAGE("variable BOOST_INCLUDEDIR not set")
-    	ENDIF()
-    	IF(NOT BOOST_LIBRARYDIR)
-       	MESSAGE("variable BOOST_LIBRARYDIR not set")
-    	ENDIF()
-    
- 	ENDIF()
- 
- IF(NEED_BOOST_EXPORT_FILE)
-   CREATE_BOOST_EXPORT_FILE( ${ALL_SOURCES})
- ENDIF()
-ENDMACRO(SET_BOOST_STUFF )
-   
diff --git a/source/CMake/CMakeSetCompilerFlags.txt b/source/CMake/CMakeSetCompilerFlags.txt
index 8df203a45..80138eb66 100644
--- a/source/CMake/CMakeSetCompilerFlags.txt
+++ b/source/CMake/CMakeSetCompilerFlags.txt
@@ -11,6 +11,10 @@ MACRO(SET_COMPILER_SPECIFIC_FLAGS compiler_type build_type)
   
   OPTION(USE_OPENMP "activate open" ON)
   
+  IF(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
+    SET(USE_OPENMP OFF)
+  ENDIF()
+  
   ###############################################################################################################
   ## Flags ruecksetzen
   ###############################################################################################################
@@ -40,7 +44,10 @@ MACRO(SET_COMPILER_SPECIFIC_FLAGS compiler_type build_type)
 	## unknown compiler
 	###############################################################################################################
 	ELSE()
-	   MESSAGE(FATAL_ERROR "CAB_COMPILER=${CAB_COMPILER} seems to be a not supported compiler")
+	   #MESSAGE(FATAL_ERROR "CAB_COMPILER=${CAB_COMPILER} seems to be a not supported compiler")
+	   #MESSAGE(WARNING "CAB_COMPILER=${CAB_COMPILER} seems to be a not supported compiler; set to generic")
+	   SET(CAB_COMPILER "gccGeneric")
+	   INCLUDE( ${SOURCE_ROOT}/CMake/compilerflags/${CAB_COMPILER}.cmake)
 	ENDIF()
    
 
diff --git a/source/CMake/CMakeSetMPIStuff.txt b/source/CMake/CMakeSetMPIStuff.txt
deleted file mode 100644
index 90015e516..000000000
--- a/source/CMake/CMakeSetMPIStuff.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-################################################################
-###               SET_MPI_STUFF                              ###
-### SET_MPI_STUFF( )                                         ###
-################################################################
-MACRO(SET_MPI_STUFF CAB_MACHINE)
-   # it will define the following values
-   #  MPI_INCLUDE_PATH = where mpi.h can be found
-   #  MPI_C_LIBRARY    = C library   (!!! if not set already  !!!)
-   #  MPI_CXX_LIBRARY  = C++ library (!!! if not set already  !!!)
-   #  MPI_CXX_COMPILER (!!! check for euqality with CMAKE_CXX_COMPILER  !!!)
-   #  MPI_C_COMPILER   (!!! check for euqality with CMAKE_C_COMPILER    !!!)
-   
-   LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -DCAB_MPI)
-	LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -DMPICH_IGNORE_CXX_SEEK)
-
-   IF(NOT MPI_DIR)
-     GET_DIRECTORY_FROM_ENV(MPI_DIR MPI_DIR CACHE "path to MPI dir")
-   ELSE(NOT MPI_DIR)
-     GET_DIRECTORY_FROM_VAR(MPI_DIR CACHE "path to MPI dir")
-   ENDIF(NOT MPI_DIR)
-
-   IF(NOT MPI_DIR)
-      SET(MPI_DIR "MPI_DIR - not found" CACHE PATH "path to MPI which inlcudes include" FORCE) 
-      MESSAGE("SET_MPI_STUFF - error - set MPI_DIR!")
-   ENDIF(NOT MPI_DIR)
-
-   IF(NOT EXISTS ${MPI_DIR} )
-      MESSAGE("SET_MPI_STUFF - error - MPI_DIR=${MPI_DIR} does not exist")
-   ELSE()
-      FIND_PROGRAM( MPI_CXX_COMPILER
-                    NAMES mpicxx mpic++ mpiCC
-                    PATHS
-                    ${MPI_DIR}/bin
-                    NO_DEFAULT_PATH
-                   )
-      FIND_PROGRAM( MPI_C_COMPILER
-                    NAMES mpicc
-                    PATHS
-                    ${MPI_DIR}/bin
-                    NO_DEFAULT_PATH
-                   )
-                   
-      # extract the parent directory path to get MPI_DIR 
-      FIND_PATH( MPI_INCLUDE_PATH mpi.h 
-                 "${MPI_DIR}/include"
-                )
-      
-      IF(NOT MPI_CXX_LIBRARY)
-         FIND_LIBRARY(MPI_CXX_LIBRARY 
-                      NAMES mpi++ pmpich++ mpichcxx mpich++ c++ cxx
-                      PATHS
-                      "${MPI_DIR}/lib"
-                      NO_DEFAULT_PATH
-                     )
-      ENDIF()
-      
-      IF(NOT MPI_C_LIBRARY)
-         FIND_LIBRARY(MPI_C_LIBRARY 
-                      NAMES mpi mpich
-                      PATHS 
-                   	 "${MPI_DIR}/lib"
-                      NO_DEFAULT_PATH
-                      )
-      ENDIF()
-
-
-      INCLUDE_DIRECTORIES( ${MPI_INCLUDE_PATH} )
-      LIST(APPEND CAB_ADDITIONAL_LINK_LIBRARIES ${MPI_CXX_LIBRARY})
-      LIST(APPEND CAB_ADDITIONAL_LINK_LIBRARIES ${MPI_C_LIBRARY})
-  
-      #IF(WIN32) 
-        #SET(CAB_ADDITIONAL_LINK_FLAGS "${CAB_ADDITIONAL_LINK_FLAGS} /NODEFAULTLIB:\"LIBCMT\"")
-      #ELSE(WIN32)
-      #  STRING(REGEX REPLACE ".*/(.*)" "\\1" temp_cxx_compiler    "${CMAKE_CXX_COMPILER}" )
-      #  STRING(REGEX REPLACE ".*/(.*)" "\\1" temp_mpicxx_compiler "${MPI_CXX_COMPILER}" )
-
-      #  IF(NOT temp_cxx_compiler STREQUAL temp_mpicxx_compiler)
-      #    MESSAGE(FATAL_ERROR "findMPI - CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER} is not the right MPI_CXX_COMPILER ${MPI_CXX_COMPILER}")
-      #  ENDIF()
-        
-      #  STRING(REGEX REPLACE ".*/(.*)" "\\1" temp_c_compiler    "${CMAKE_C_COMPILER}" )
-      #  STRING(REGEX REPLACE ".*/(.*)" "\\1" temp_mpic_compiler "${MPI_C_COMPILER}" )
-
-      #   IF(NOT temp_c_compiler STREQUAL temp_mpic_compiler)
-      #    MESSAGE(FATAL_ERROR "findMPI - CMAKE_C_COMPILER ${CMAKE_C_COMPILER} is not the right MPI_C_COMPILER ${MPI_C_COMPILER}")
-      #   ENDIF()
-      #ENDIF() 
-   ENDIF() 
-ENDMACRO(SET_MPI_STUFF CAB_MACHINE)
-
diff --git a/source/CMake/CMakeSwigMacros.txt b/source/CMake/CMakeSwigMacros.txt
deleted file mode 100644
index 25edf48dd..000000000
--- a/source/CMake/CMakeSwigMacros.txt
+++ /dev/null
@@ -1,162 +0,0 @@
-################################################################
-###               SET_SWIG_STUFF                             ###
-################################################################
-MACRO(SET_SWIG_STUFF )
-
-   IF(NOT SWIG_FOUND)
-      FIND_PACKAGE(SWIG REQUIRED)
-   ENDIF()
-
-   IF(NOT SWIG_FOUND)
-      MESSAGE(FATAL_ERROR "SET_SWIG_STUFF::could not find SWIG")
-   ENDIF()
-
-   STRING(REGEX REPLACE "([0-9]*).([0-9]*).([0-9]*)" "\\1" CAB_SWIG_VERSION_MAJOR ${SWIG_VERSION})
-   STRING(REGEX REPLACE "([0-9]*).([0-9]*).([0-9]*)" "\\2" CAB_SWIG_VERSION_MINOR ${SWIG_VERSION})
-   STRING(REGEX REPLACE "([0-9]*).([0-9]*).([0-9]*)" "\\3" CAB_SWIG_VERSION_PATCH ${SWIG_VERSION})
-
-   MATH(EXPR CAB_SWIG_VERSION "${CAB_SWIG_VERSION_MAJOR}*10000 + ${CAB_SWIG_VERSION_MINOR}*100 + ${CAB_SWIG_VERSION_PATCH}")
-   LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS   "-DCAB_SWIG=${CAB_SWIG_VERSION}")
-
-   IF( CAB_SWIG_VERSION} LESS 10340 )
-      MESSAGE(FATAL_ERROR "SET_SWIG_STUFF: to get correct SWIG wrapper files SWIG version must be >= 1.3.40")
-   ENDIF()
-
-   IF(MSVC)   
-      LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS "-DNT=1")
-      LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS "-DIMPORT")
-   ENDIF()
-
-ENDMACRO(SET_SWIG_STUFF )
-
-
-################################################################
-###               SET_SWIG_STUFF                             ###
-################################################################
-# swigfiles: e.g. vf.i
-# language: e.g. ruby
-# outfiles: list generated files AND swig files will be append on!
-MACRO(SWIG_WAPP_CPP swigfiles language outFiles)
-   IF(NOT SWIG_FOUND)
-      MESSAGE(FATAL_ERROR "SWIG_WAPP_CPP::error SWIG package was not loaded")
-   ENDIF()
-
-   IF(${swigfiles})
-      FOREACH(swigfileName ${${swigfiles}}) 
-
-         ################################################################
-         # Dateiabhaengigkeiten ermitteln (includes in xxx.i ermitteln)
-         ################################################################
-         FILE(READ "${swigfileName}" swigfile)
-         SET(header_file_var "") #var initialisieren bzw. reseten
-
-         ################################################################
-         # Include directories ermitteln (um fuer dependency vollen pfad ermitteln zu koennen
-         GET_DIRECTORY_PROPERTY(cmake_include_directories INCLUDE_DIRECTORIES)
-         SET(swig_include_dirs)
-
-
-         MESSAGE(STATUS "scanning swigfile dependencies")
-#    WHILE(NOT header_file_var STREQUAL swigfile)
-#       #1. headerfile finden (mit #include "foo.h")
-#       #STRING(REGEX REPLACE ".*#include[ ]*[<\"]([^%]*)[>\"].*" "\\1" header_file_var "${swigfile}")
-#       STRING(REGEX REPLACE ".*#include[ ]*[\"]([^\"]*)[>\"].*" "\\1" header_file_var "${swigfile}")
-#       IF(NOT header_file_var STREQUAL swigfile) #wenn nichts zu ersetzen ist.. -> steht in className wieder komplettes file
-#         #headerfile aus swigfile löschen!
-#         STRING(REGEX REPLACE "(.*)#include[ ]*[<\"][ ]*${header_file_var}[ ]*[>\"].*" "\\1" swigfile "${swigfile}")
-#         SET(i_dependencies ${i_dependencies} ${header_file_var} )
-#       ENDIF()
-#
-#       #1. headerfile finden (mit #include <foo.h> --> es wird mit Hilfe der include pfade der vollstaendige Pfadname ermittelt )
-#       STRING(REGEX REPLACE ".*#include[ ]*[<]([^>]*)[>\"].*" "\\1" header_file_var "${swigfile}")
-#       IF(NOT header_file_var STREQUAL swigfile) #wenn nichts zu ersetzen ist.. -> steht in className wieder komplettes file
-#         #headerfile aus swigfile löschen!
-#         STRING(REGEX REPLACE "(.*)#include[ ]*[<\"][ ]*${header_file_var}[ ]*[>\"].*" "\\1" swigfile "${swigfile}")
-#         
-#         #vollstaendigen pfadnamen ermitteln
-#         SET(TEMP_FOUND FALSE)
-#         FOREACH(id ${cmake_include_directories})
-#           IF(NOT TEMP_FOUND)
-#             IF(EXISTS ${id}/${header_file_var})
-#               SET(i_dependencies ${i_dependencies} ${id}/${header_file_var} )
-#               SET(TEMP_FOUND TRUE)
-#             ENDIF()
-#           ENDIF()
-#         ENDFOREACH()
-#       ENDIF()
-#
-#    ENDWHILE()
-         MESSAGE(STATUS "scanning swigfile dependencies: done")
-
-         ################################################################
-         # Regel erstellen
-         ################################################################
-         ################################################################
-         # dateinamen fuer zu generiertes file erzeugen
-         GET_FILENAME_COMPONENT(outname      ${swigfileName} NAME_WE)
-         GET_FILENAME_COMPONENT(swigfiledir  ${swigfileName} PATH)
-         STRING(REGEX REPLACE "${SOURCE_ROOT}/" "" outdir ${swigfiledir})
-         SET(tempSourceGroupName ${outdir})
-         SET(outdir ${CMAKE_CURRENT_BINARY_DIR}/swig_cpp/${outdir}) 
-         FILE(MAKE_DIRECTORY ${outdir})
-         SET(wrapper_file ${outdir}/${outname}_wrapp.cpp)
-
- 	 #IF(NOT EXISTS ${wrapper_file})
-         #  FILE(WRITE ${wrapper_file} "")
-         #ENDIF()
-    
-         
-         ################################################################
-         # Include directories uebernehmen
-         GET_DIRECTORY_PROPERTY(cmake_include_directories INCLUDE_DIRECTORIES)
-         SET(swig_include_dirs)
-         FOREACH(id ${cmake_include_directories})
-            SET(swig_include_dirs ${swig_include_dirs} "-I${id}")
-         ENDFOREACH(id)
-
-         ################################################################
-         # praeprozessor defines uebernehmen
-         GET_DIRECTORY_PROPERTY(preProcessorDefs COMPILE_DEFINITIONS)
-         SET(swigPreProcessorDefs "")
-         FOREACH(define ${preProcessorDefs})
-            LIST(APPEND swigPreProcessorDefs "-D${define}" )   
-         ENDFOREACH()
-         #auf die aus CAB_ADDTIONAL_COMPILER_FLAGS herausfinden
-         FOREACH(flag ${CAB_ADDTIONAL_COMPILER_FLAGS})
-            IF(flag MATCHES "[ ]?-D.*")
-               LIST(APPEND swigPreProcessorDefs ${flag} )   
-            ENDIF()
-         ENDFOREACH()
-         
-
-         ################################################################
-         # pre compile commando auf das interface file mappen
-         GET_FILENAME_COMPONENT(swigfiledir  ${swigfileName} PATH)
-         ADD_CUSTOM_COMMAND(OUTPUT ${wrapper_file}
-                            PRE_BUILD
-                            COMMAND echo on && ${SWIG_EXECUTABLE}
-                            ARGS -c++ 
-                                 -${language} 
-                                 ${swig_include_dirs} 
-                                 ${swigPreProcessorDefs} 
-                                 -o ${wrapper_file} 
-                                 ${swigfileName}
-                            WORKING_DIRECTORY ${swigfiledir}                            
-                            MAIN_DEPENDENCY ${swigfileName} 
-                            DEPENDS ${i_dependencies} 
-                            COMMENT SWIG: generating ${wrapper_file} )
-
-          #SET_SOURCE_FILES_PROPERTIES("${wrapper_file}" PROPERTIES GENERATED 1)
-          SET(GENERATED_FILES ${GENERATED_FILES} ${wrapper_file})
-          SET(${outFiles}  ${${outFiles}} ${wrapper_file} )
-
-         ################################################################
-         # SOURCE GROUP
-         ################################################################
-         STRING(REGEX REPLACE "${CMAKE_CURRENT_BINARY_DIR}/swig_cpp/" "" tempSourceGroupName ${outdir})
-         CAB_SOURCE_GROUP( ${tempSourceGroupName} ${swigfileName} ${wrapper_file} )
-
-      ENDFOREACH()
-   ENDIF()
-
-ENDMACRO(SWIG_WAPP_CPP swigfiles outFiles)
diff --git a/source/CMake/compilerflags/clang.cmake b/source/CMake/compilerflags/clang.cmake
new file mode 100644
index 000000000..98e133907
--- /dev/null
+++ b/source/CMake/compilerflags/clang.cmake
@@ -0,0 +1,68 @@
+###############################################################################################################
+## 
+##  clang
+##
+###############################################################################################################
+
+MACRO(SET_COMPILER_SPECIFIC_FLAGS_INTERN build_type use64BitOptions)
+   #############################################################################################################
+   # Flags
+   #############################################################################################################
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-O3 -fomit-frame-pointer -finline-functions -fPIC -Wbackslash-newline-escape")
+ 
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-O3 -fomit-frame-pointer -finline-functions -fPIC")
+
+   #############################################################################################################
+   # 64Bit support
+   #############################################################################################################
+   IF( ${use64BitOptions} ) 
+     LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-m64" )
+     LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS   "-m64" )
+   ENDIF()
+
+   #############################################################################################################
+   # OpenMP support
+   #############################################################################################################
+   IF(USE_OPENMP)
+     #LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-fopenmp")
+     #LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-fopenmp")
+   ENDIF()
+
+   #############################################################################################################
+   # mt support
+   #############################################################################################################
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-pthread")
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-pthread")
+
+   #############################################################################################################
+   # c++ 11 support
+   #############################################################################################################
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-std=c++11")
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-std=c++11")
+
+   #############################################################################################################
+   # disable warning
+   #############################################################################################################
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-deprecated") #deprecated header warning
+   #LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wbackslash-newline-escape") #backslash and newline separated by space
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wcomment") #'/*' within block comment
+
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-Wbackslash-newline-escape") #backslash and newline separated by space
+   
+   #############################################################################################################
+   # c++ 17 support
+   #############################################################################################################
+   #LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-std=c++17")
+   #LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-std=c++17")
+   
+   #LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-fext-numeric-literals")
+   #LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-D_GLIBCXX_USE_CXX11_ABI=0")
+   #LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wregister")
+
+   
+
+   IF(NOT APPLE)
+      LIST(APPEND CAB_ADDITIONAL_LINK_PROPS "-lrt")
+   ENDIF()
+
+ENDMACRO(SET_COMPILER_SPECIFIC_FLAGS_INTERN build_type use64BitOptions)
diff --git a/source/CMake/compilerflags/gccGeneric.cmake b/source/CMake/compilerflags/gccGeneric.cmake
new file mode 100644
index 000000000..c2e14c67f
--- /dev/null
+++ b/source/CMake/compilerflags/gccGeneric.cmake
@@ -0,0 +1,62 @@
+###############################################################################################################
+## 
+##  gcc generic
+##
+###############################################################################################################
+
+MACRO(SET_COMPILER_SPECIFIC_FLAGS_INTERN build_type use64BitOptions)
+   #############################################################################################################
+   # Flags
+   #############################################################################################################
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-O3 -fomit-frame-pointer -finline-functions -funroll-all-loops -fPIC")
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-deprecated") #deprecated header warning (jarl benutzt sstream weil schneller und so) 
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-result")
+   
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-O3 -fomit-frame-pointer -finline-functions -funroll-all-loops -fPIC")
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-Wno-deprecated") #deprecated header warning (jarl benutzt sstream weil schneller und so) 
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-Wno-unused-result")
+   #############################################################################################################
+   # 64Bit support
+   #############################################################################################################
+   IF( ${use64BitOptions} ) 
+     LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-m64" )
+     LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS   "-m64" )
+   ENDIF()
+
+   #############################################################################################################
+   # OpenMP support
+   #############################################################################################################
+   IF(USE_OPENMP)
+     LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-fopenmp")
+     LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-fopenmp")
+   ENDIF()
+
+   #############################################################################################################
+   # mt support
+   #############################################################################################################
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-pthread")
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-pthread")
+
+   #############################################################################################################
+   # c++ 11 support
+   #############################################################################################################
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-std=c++11")
+   LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-std=c++11")
+   
+   #############################################################################################################
+   # c++ 17 support
+   #############################################################################################################
+   #LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-std=c++17")
+   #LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-std=c++17")
+   
+   #LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-fext-numeric-literals")
+   #LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-D_GLIBCXX_USE_CXX11_ABI=0")
+   #LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wregister")
+
+   
+
+   IF(NOT APPLE)
+      LIST(APPEND CAB_ADDITIONAL_LINK_PROPS "-lrt")
+   ENDIF()
+
+ENDMACRO(SET_COMPILER_SPECIFIC_FLAGS_INTERN build_type use64BitOptions)
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 69698e580..78d1f5746 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -1,4 +1,4 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
+CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
 
 #workaround for machine with mpi compiler wrapper
 #it most define before project
@@ -45,7 +45,9 @@ SET(USE_DEM_COUPLING OFF CACHE BOOL "PE plugin")
 INCLUDE("CMake/CMakeCABMacros.txt")
 
 #MPI
-FIND_PACKAGE(MPI REQUIRED)
+IF((NOT ${CMAKE_CXX_COMPILER} MATCHES mpicxx) AND (NOT ${CMAKE_CXX_COMPILER} MATCHES mpiicpc))# OR NOT ${CMAKE_CXX_COMPILER} MATCHES cc OR NOT ${CMAKE_CXX_COMPILER} MATCHES mpiCC)
+	FIND_PACKAGE(MPI REQUIRED)
+ENDIF()
 #SET(MPI_CXX_LINK_FLAGS -mpe=mpilog)
 
 #SET(BOOST_USE_MULTITHREAD ON)
@@ -80,8 +82,8 @@ IF(${USE_VTK})
     #find_package(VTK 6.1 NO_MODULE)
     FIND_PACKAGE(VTK REQUIRED)
     INCLUDE_DIRECTORIES(${VTK_INCLUDE_DIRS})
+    MESSAGE("VTK_INCLUDE_DIRS = " ${VTK_INCLUDE_DIRS})
 ENDIF()
-MESSAGE("VTK_INCLUDE_DIRS = " ${VTK_INCLUDE_DIRS})
 
 IF(${USE_CATALYST})
     find_package(ParaView 4.3 REQUIRED COMPONENTS vtkPVPythonCatalyst)
-- 
GitLab