diff --git a/CMakeLists.txt b/CMakeLists.txt index 63249983be68d8043b0278e2f5608dd499d44d91..97b0a6a3e6f20b3b20b60e69aa86c3c218bb727d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,17 +7,21 @@ cmake_minimum_required(VERSION 2.8 FATAL_ERROR) project(BornAgain) # --- General project settings --- -if(NOT BORNAGAIN_PYTHON) - set(BORNAGAIN_PYTHON ON) -endif() +option(BORNAGAIN_PYTHON "Build with python support" ON) +option(BORNAGAIN_APP "Build test application" ON) +option(BORNAGAIN_GUI "Build a graphical user interface" OFF) -if(NOT BORNAGAIN_APP) - set(BORNAGAIN_APP ON) -endif() +#if(NOT BORNAGAIN_PYTHON) +# set(BORNAGAIN_PYTHON ON) +#endif() -if(NOT BORNAGAIN_GUI) - set(BORNAGAIN_GUI OFF) -endif() +#if(NOT BORNAGAIN_APP) +# set(BORNAGAIN_APP ON) +#endif() + +#if(NOT BORNAGAIN_GUI) +# set(BORNAGAIN_GUI OFF) +#endif() #--- Path for additional cmake modules --- set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) diff --git a/cmake/modules/BornAgainCPack.cmake b/cmake/modules/BornAgainCPack.cmake index e0cda9a03b8658473f3404c9dbdc4bf0dcd47e68..68f7d2aa834a8ca3280155c1f6ce3d387eebb422 100644 --- a/cmake/modules/BornAgainCPack.cmake +++ b/cmake/modules/BornAgainCPack.cmake @@ -1,5 +1,6 @@ # file to build installer +option(BUILD_DEBIAN "Build a debian package" ON) include(InstallRequiredSystemLibraries) @@ -10,7 +11,7 @@ set(BORNAGAIN_PATCH_VERSION "0") set(BORNAGAIN_VERSION "${BORNAGAIN_MAJOR_VERSION}.${BORNAGAIN_MINOR_VERSION}.${BORNAGAIN_PATCH_VERSION}") set(CPACK_PACKAGE_NAME "BornAgain") -set(CPACK_PACKAGE_DESCRIPTION "BornAgain: simulate and fit scattering at grazing incidence") +set(CPACK_PACKAGE_DESCRIPTION "BornAgain: simulate and fit scattering at grazing incidence.") set(CPACK_PACKAGE_VENDOR "Sceintific Computing at MLZ") set(CPACK_PACKAGE_VERSION ${BORNAGAIN_VERSION}) set(CPACK_PACKAGE_VERSION_MAJOR ${BORNAGAIN_MAJOR_VERSION}) @@ -38,7 +39,10 @@ set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_PROJECT_NAME}-${BORNAGAIN_VERSION}" if(WIN32) set(CPACK_GENERATOR "NSIS") elseif(APPLE) - set(CPACK_GENERATOR "PackageMaker;TGZ") + #set(CPACK_GENERATOR "PackageMaker;TGZ") + set(CPACK_GENERATOR "STGZ;TGZ") +elseif(UNIX AND BUILD_DEBIAN) # one can build debian package only on UNIX system + set(CPACK_GENERATOR "DEB") else() set(CPACK_GENERATOR "STGZ;TGZ") endif() @@ -48,6 +52,110 @@ endif() set(CPACK_NSIS_MODIFY_PATH ON) +# Generating the source package +set(CPACK_SOURCE_GENERATOR "TGZ") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + +# Specify which files do not include into the source package generated by make package_source +set(CPACK_SOURCE_IGNORE_FILES + ${CPACK_SOURCE_IGNORE_FILES} # first take the default parameters + "/Doc/UserManual/" + "/dev-tools/edit-scripts/" + "/dev-tools/packaging/" + "/dev-tools/tmp-examples/" + "/dev-tools/tmp-unsorted/" + "/GUI/" + "/XCode_BornAgain.xcodeproj/" + "~$" + "/.git/" + "/\\\\.git/" + "/\\\\\\\\.git/" # more screeneng symbols is neccesary because of double file processing by cmake and cpack + "\\\\\\\\.swp$" + "\\\\.swp$" + "/.metadata/" + "/.settings/" + "\\\\.cproject" + "\\\\.project" + "\\\\.lssrc" + "\\\\.DS_Store" + "\\\\.obj" +) + + +# parameters to build a debian package +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Marina Ganeva <m.ganeva@fz-juelich.de>") + +# Architecture: (mandatory) +IF(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE) + # There is no such thing as i686 architecture on debian, you should use i386 instead + # $ dpkg --print-architecture + FIND_PROGRAM(DPKG_CMD dpkg) + IF(NOT DPKG_CMD) + MESSAGE(STATUS "Can not find dpkg in your path, default to i386.") + SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386) + ENDIF(NOT DPKG_CMD) + EXECUTE_PROCESS(COMMAND "${DPKG_CMD}" --print-architecture + OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +ENDIF(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE) + +if(${CPACK_DEBIAN_PACKAGE_ARCHITECTURE} MATCHES "i686") + SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386) +endif() + + +set(CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") +set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") +set(CPACK_DEBIAN_PACKAGE_SECTION "devel") +set(CPACK_STRIP_FILES "TRUE") +set(CPACK_DEBIAN_PACKAGE_DEPENDS "libgsl, libboost, libfftw3, libpython") # [TODO:] set versions +set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION}") +set(CPACK_DEBIAN_PACKAGE_VERSION 1) +set(CPACK_PACKAGE_FILE_NAME "${CPACK_DEBIAN_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${CPACK_DEBIAN_PACKAGE_VERSION}_${CMAKE_SYSTEM_PROCESSOR}") + +# write copyrite file [TODO:] fix the text of copyright +file(WRITE "${CMAKE_BINARY_DIR}/copyright" + "Copyright (C) 2013 Sceintific Computing at MLZ + + This software is licensed under the terms of the + GNU General Public License Version 3. + + Software distributed under the License is distributed + on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either + express or implied. See the GPL for the specific language + governing rights and limitations. + + You should have received a copy of the GPL along with this + program. If not, go to http://www.gnu.org/licenses/gpl.html + or write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +On Debian systems, the complete text of the GNU General Public +License can be found in `/usr/share/common-licenses/GPL-3'.") + +install(FILES "${CMAKE_BINARY_DIR}/copyright" + DESTINATION "share/doc/${CPACK_DEBIAN_PACKAGE_NAME}") + +# write changelog file +FIND_PROGRAM(GIT_EXECUTABLE git) +FIND_PROGRAM(GIT2CL_EXECUTABLE git2cl) + +IF(GIT_EXECUTABLE AND GIT2CL_EXECUTABLE) + set(GIT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/.git") + execute_process(COMMAND ${GIT_EXECUTABLE} --git-dir=${GIT_DIR} log + COMMAND ${GIT2CL_EXECUTABLE} + COMMAND gzip -9 + OUTPUT_FILE "${CMAKE_BINARY_DIR}/changelog.gz") + install(FILES "${CMAKE_BINARY_DIR}/changelog.gz" + DESTINATION "share/doc/${CPACK_DEBIAN_PACKAGE_NAME}") +else() + MESSAGE(STATUS "W: git or git2cl not found. Can't create the debian changelog file.") +ENDIF(GIT_EXECUTABLE AND GIT2CL_EXECUTABLE) + + +# check if such commands are exist + include(CPack) set(CPACK_COMPONENTS_ALL Libraries Headers Examples)