From b8ee5238b7d5c36d9d98433b922789f52e9cb61a Mon Sep 17 00:00:00 2001
From: pospelov <pospelov@fz-juelich.de>
Date: Thu, 25 Jul 2013 23:45:09 +0200
Subject: [PATCH] cmake: bug in python interpreter/puthon library pair
 selection

---
 BornAgain.pro                               |   4 +-
 CMakeLists.txt                              |   4 +-
 Core/Samples/inc/Layer.h                    |   6 +-
 cmake/modules/BornAgainCPack.cmake          | 110 ++++++++++++++++++++
 cmake/modules/CheckCompiler.cmake           |   2 +-
 cmake/modules/SearchInstalledSoftware.cmake |   4 +-
 cmake/modules/SetUpLinux.cmake              |  10 +-
 cmake/modules/SetUpMacOS.cmake              |   4 +-
 cmake/modules/SetUpWindows.cmake            |   2 +-
 9 files changed, 129 insertions(+), 17 deletions(-)
 create mode 100644 cmake/modules/BornAgainCPack.cmake

diff --git a/BornAgain.pro b/BornAgain.pro
index 5e5cef13718..bc1c23ddb36 100644
--- a/BornAgain.pro
+++ b/BornAgain.pro
@@ -18,8 +18,8 @@ SUBDIRS += Fit
     SUBDIRS += App
 }
 
-SUBDIRS += Tests/FunctionalTests/TestCore
-SUBDIRS += Tests/FunctionalTests/TestFit
+#SUBDIRS += Tests/FunctionalTests/TestCore
+#SUBDIRS += Tests/FunctionalTests/TestFit
 
 # compilation in lister order
 CONFIG += ordered
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c22bb74e976..77220519308 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,7 +10,7 @@ project(BornAgain)
 if(NOT BORNAGAIN_PYTHON)
     set(BORNAGAIN_PYTHON ON)
 endif()
-set(BORNAGAIN_APP ON)
+set(BORNAGAIN_APP OFF)
 set(BORNAGAIN_GUI OFF)
 
 #--- Path for additional cmake modules ---
@@ -40,3 +40,5 @@ endif()
 # functional tests (cmake; make check)
 add_subdirectory(Tests/FunctionalTests)
 
+# packaging
+#include(BornAgainCPack)
diff --git a/Core/Samples/inc/Layer.h b/Core/Samples/inc/Layer.h
index 767e6792426..4aefe75ca1a 100644
--- a/Core/Samples/inc/Layer.h
+++ b/Core/Samples/inc/Layer.h
@@ -62,11 +62,11 @@ class BA_CORE_API_ Layer : public ICompositeSample
     virtual complex_t getRefractiveIndex() const;
 
     //! sets particle decoration
-    void setDecoration(IDecoration *decoration);
-    void setDecoration(const IDecoration &decoration);
+    virtual void setDecoration(IDecoration *decoration);
+    virtual void setDecoration(const IDecoration &decoration);
 
     //! returns particle decoration
-    const IDecoration* getDecoration() const { return mp_decoration; }
+    virtual const IDecoration* getDecoration() const { return mp_decoration; }
 
     //! Returns true if decoration is present
     virtual bool hasDWBASimulation() const { return (mp_decoration ? true : false); }
diff --git a/cmake/modules/BornAgainCPack.cmake b/cmake/modules/BornAgainCPack.cmake
new file mode 100644
index 00000000000..9695eaa671f
--- /dev/null
+++ b/cmake/modules/BornAgainCPack.cmake
@@ -0,0 +1,110 @@
+#---------------------------------------------------------------------------------------------------
+#  RootCPack.cmake
+#   - basic setup for packaging ROOT using CTest
+#---------------------------------------------------------------------------------------------------
+
+set(BORNAGAIN_MAJOR_VERSION "0")
+set(BORNAGAIN_MINOR_VERSION "8")
+set(BORNAGAIN_PATCH_VERSION "1")
+
+set(ROOT_VERSION "${BORNAGAIN_MAJOR_VERSION}.${BORNAGAIN_MINOR_VERSION}.${BORNAGAIN_PATCH_VERSION}")
+
+
+#---------------------------------------------------------------------------------------------------
+# Package up needed system libraries - only for WIN32?
+#
+include(InstallRequiredSystemLibraries)
+
+#----------------------------------------------------------------------------------------------------
+# General packaging setup - variable relavant to all package formats
+#
+set(CPACK_PACKAGE_DESCRIPTION "BornAgain project")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "BornAgain project")
+#set(CPACK_PACKAGE_VENDOR "HEPSoft")
+set(CPACK_PACKAGE_VERSION ${BORNAGAIN_VERSION})
+set(CPACK_PACKAGE_VERSION_MAJOR ${BORNAGAIN_MAJOR_VERSION})
+set(CPACK_PACKAGE_VERSION_MINOR ${BORNAGAIN_MINOR_VERSION})
+set(CPACK_PACKAGE_VERSION_PATCH ${BORNAGAIN_PATCH_VERSION})
+
+#---Resource Files-----------------------------------------------------------------------------------
+#configure_file(README/README README.txt COPYONLY)
+#configure_file(LICENSE LICENSE.txt COPYONLY)
+#set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_BINARY_DIR}/README.txt")
+#set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_BINARY_DIR}/LICENSE.txt")
+#set(CPACK_RESOURCE_FILE_README "${CMAKE_BINARY_DIR}/README.txt")
+
+#---Source package settings--------------------------------------------------------------------------
+set(CPACK_SOURCE_IGNORE_FILES 
+    ${PROJECT_BINARY_DIR}
+    ${PROJECT_SOURCE_DIR}/tests
+    "~$"
+    "/CVS/"
+    "/.svn/"
+    "/\\\\\\\\.svn/"
+    "/.git/"
+    "/\\\\\\\\.git/"
+    "\\\\\\\\.swp$"
+    "\\\\\\\\.swp$"
+    "\\\\.swp"
+    "\\\\\\\\.#"
+    "/#"
+)
+set(CPACK_SOURCE_STRIP_FILES "")
+
+#---Binary package setup-----------------------------------------------------------------------------
+set(CPACK_PACKAGE_RELOCATABLE True)
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "BornAgain ${BORNAGAIN_MAJOR_VERSION}.${BORNAGAIN_MINOR_VERSION}")
+if(CMAKE_BUILD_TYPE STREQUAL Release)
+  set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${BORNAGAIN_VERSION}-${BORNAGAIN_ARCHITECTURE}")
+else()
+  set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${BORNAGAIN_VERSION}-${BORNAGAIN_ARCHITECTURE}-${CMAKE_BUILD_TYPE}")
+endif()
+#set(CPACK_PACKAGE_EXECUTABLES "root" "ROOT")
+
+if(WIN32)
+  set(CPACK_GENERATOR "NSIS;ZIP")
+  set(CPACK_SOURCE_GENERATOR "TGZ;ZIP")
+elseif(APPLE)
+#  set(CPACK_GENERATOR "PackageMaker;TGZ")
+  set(CPACK_SOURCE_GENERATOR "TGZ;TBZ2")
+else()
+  set(CPACK_GENERATOR "STGZ;TGZ")
+  set(CPACK_SOURCE_GENERATOR "TGZ;TBZ2;ZIP")
+endif()
+
+#----------------------------------------------------------------------------------------------------
+# Finally, generate the CPack per-generator options file and include the
+# base CPack configuration.
+#
+#configure_file(cmake/modules/CMakeCPackOptions.cmake.in CMakeCPackOptions.cmake @ONLY)
+set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake)
+include(CPack)
+
+#----------------------------------------------------------------------------------------------------
+# Define components and installation types (after CPack included!)
+#
+cpack_add_install_type(full      DISPLAY_NAME "Full Installation")
+cpack_add_install_type(minimal   DISPLAY_NAME "Minimal Installation")
+cpack_add_install_type(developer DISPLAY_NAME "Developer Installation")
+
+cpack_add_component(applications 
+    DISPLAY_NAME "BornAgain Applications" 
+    DESCRIPTION "BornAgain executables such as root.exe"
+	  INSTALL_TYPES full minimal developer)
+
+cpack_add_component(libraries 
+    DISPLAY_NAME "BornAgain Libraries" 
+    DESCRIPTION "All BornAgain libraries and dictionaries"
+	  INSTALL_TYPES full minimal developer)
+
+cpack_add_component(headers 
+    DISPLAY_NAME "C++ Headers" 
+    DESCRIPTION "These are needed to do any development"
+	  INSTALL_TYPES full developer)
+	  
+cpack_add_component(tests 
+    DISPLAY_NAME "BornAgain Tests and Tutorials" 
+    DESCRIPTION "These are needed to do any test and tutorial"
+	  INSTALL_TYPES full developer)
+
+
diff --git a/cmake/modules/CheckCompiler.cmake b/cmake/modules/CheckCompiler.cmake
index 2e38644f782..95274acae5e 100644
--- a/cmake/modules/CheckCompiler.cmake
+++ b/cmake/modules/CheckCompiler.cmake
@@ -80,6 +80,6 @@ endif()
 
 #---Print the final compiler flags--------------------------------------------------------------------
 message(STATUS "BornAgain Platform: ${ROOT_PLATFORM}")
-message(STATUS "BornAgain Architecture: ${ROOT_ARCHITECTURE}")
+message(STATUS "BornAgain Architecture: ${BORNAGAIN_ARCHITECTURE}")
 message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
 message(STATUS "Compiler Flags: ${CMAKE_CXX_FLAGS} ${ALL_CXX_FLAGS_${CMAKE_BUILD_TYPE}}")
diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake
index b0b14e2b25a..efa89e98dee 100644
--- a/cmake/modules/SearchInstalledSoftware.cmake
+++ b/cmake/modules/SearchInstalledSoftware.cmake
@@ -49,9 +49,9 @@ endif()
 if(BORNAGAIN_PYTHON)
 
     find_package(PythonInterp)
+    # important to find interpreter and libraries from same python version
+    set(PythonLibs_FIND_VERSION ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR})
 
-    set(PythonLibs_FIND_VERSION ${PYTHON_VERSION_STRING})
-    
     find_package(PythonLibs REQUIRED)
     if(PYTHONLIBS_FOUND)
         include_directories(${PYTHON_INCLUDE_DIRS})
diff --git a/cmake/modules/SetUpLinux.cmake b/cmake/modules/SetUpLinux.cmake
index 4e537ba4547..9b5f2647090 100644
--- a/cmake/modules/SetUpLinux.cmake
+++ b/cmake/modules/SetUpLinux.cmake
@@ -1,4 +1,4 @@
-set(ROOT_ARCHITECTURE linux)
+set(BORNAGAIN_ARCHITECTURE linux)
 set(ROOT_PLATFORM linux)
 
 execute_process(COMMAND uname -m OUTPUT_VARIABLE SYSCTL_OUTPUT)
@@ -9,9 +9,9 @@ if(${SYSCTL_OUTPUT} MATCHES x86_64)
   set(SPECIAL_CINT_FLAGS "-DG__64BIT")
   if(CMAKE_COMPILER_IS_GNUCXX)
     message(STATUS "Found GNU compiler collection")
-    set(ROOT_ARCHITECTURE linuxx8664gcc)
+    set(BORNAGAIN_ARCHITECTURE linuxx8664gcc)
   elseif(CMAKE_CXX_COMPILER_ID STREQUAL Intel)
-    set(ROOT_ARCHITECTURE linuxx8664icc)
+    set(BORNAGAIN_ARCHITECTURE linuxx8664icc)
   else()
     message(FATAL_ERROR "There is no Setup for this compiler up to now. Don't know what to do. Stop cmake at this point.")
   endif()
@@ -21,9 +21,9 @@ else()
   set(SPECIAL_CINT_FLAGS "")
   if(CMAKE_COMPILER_IS_GNUCXX)
     message(STATUS "Found GNU compiler collection")
-    set(ROOT_ARCHITECTURE linux)
+    set(BORNAGAIN_ARCHITECTURE linux)
   elseif(CMAKE_CXX_COMPILER_ID STREQUAL Linux)
-    set(ROOT_ARCHITECTURE linuxicc)
+    set(BORNAGAIN_ARCHITECTURE linuxicc)
   else()
     message(FATAL_ERROR "There is no Setup for this compiler up to now. Don't know what to do. Stop cmake at this point.")
   endif()
diff --git a/cmake/modules/SetUpMacOS.cmake b/cmake/modules/SetUpMacOS.cmake
index 190195b57b4..0a9c9256a67 100644
--- a/cmake/modules/SetUpMacOS.cmake
+++ b/cmake/modules/SetUpMacOS.cmake
@@ -1,4 +1,4 @@
-set(ROOT_ARCHITECTURE macosx)
+set(BORNAGAIN_ARCHITECTURE macosx)
 set(ROOT_PLATFORM macosx)
 
 set(SYSLIBS "-lm ${EXTRA_LDFLAGS} ${FINK_LDFLAGS} ${CMAKE_THREAD_LIBS_INIT} -ldl")
@@ -27,7 +27,7 @@ if (CMAKE_SYSTEM_NAME MATCHES Darwin)
     execute_process(COMMAND /usr/sbin/sysctl machdep.cpu.extfeatures OUTPUT_VARIABLE SYSCTL_OUTPUT)
     if(${SYSCTL_OUTPUT} MATCHES 64)
        MESSAGE(STATUS "Found a 64bit system") 
-       set(ROOT_ARCHITECTURE macosx64)
+       set(BORNAGAIN_ARCHITECTURE macosx64)
        SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
        SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS} -m64")
        SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS} -m64")
diff --git a/cmake/modules/SetUpWindows.cmake b/cmake/modules/SetUpWindows.cmake
index cbccae74a30..838080de002 100644
--- a/cmake/modules/SetUpWindows.cmake
+++ b/cmake/modules/SetUpWindows.cmake
@@ -1,4 +1,4 @@
-set(ROOT_ARCHITECTURE win32)
+set(BORNAGAIN_ARCHITECTURE win32)
 set(ROOT_PLATFORM win32)
 
 math(EXPR VC_MAJOR "${MSVC_VERSION} / 100")
-- 
GitLab