Blame cmake/packaging.cmake

Packit Service 50c9f2
##### set CPack properties #####
Packit Service 50c9f2
#
Packit Service 50c9f2
# Good doc/tutorial/example:
Packit Service 50c9f2
# - http://www.cmake.org/Wiki/CMake:CPackPackageGenerators
Packit Service 50c9f2
# - http://www.cmake.org/cmake/help/v3.3/module/CPack.html
Packit Service 50c9f2
# - http://sourceforge.net/p/klusters/klusters/ci/master/tree/CMakeLists.txt
Packit Service 50c9f2
#
Packit Service 50c9f2
# This cmake script should generate same packages (deb,rpm) as:
Packit Service 50c9f2
# - http://mirror.debian.ikoula.com/debian/pool/main/d/doxygen
Packit Service 50c9f2
# - http://archive.ubuntu.com/ubuntu/pool/main/d/doxygen (http://old-releases.ubuntu.com/ubuntu/pool/main/d/doxygen)
Packit Service 50c9f2
# - http://rpmfind.net/linux/rpm2html/search.php?query=doxygen
Packit Service 50c9f2
Packit Service 50c9f2
set(CPACK_STRIP_FILES      ON)
Packit Service 50c9f2
set(CPACK_PACKAGE_NAME     ${PROJECT_NAME} )
Packit Service 50c9f2
set(CPACK_PACKAGE_VERSION  ${VERSION})
Packit Service 50c9f2
set(CPACK_PACKAGE_CONTACT  "Dimitri van Heesch")
Packit Service 50c9f2
set(CPACK_PACKAGE_VENDOR   "Dimitri van Heesch")
Packit Service 50c9f2
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Generate documentation from C, C++, Java, Python and other languages")
Packit Service 50c9f2
set(CPACK_PACKAGE_DESCRIPTION "Doxygen is the de facto standard tool for generating documentation from annotated C++ sources.
Packit Service 50c9f2
 But many other popular programming languages are supported:
Packit Service 50c9f2
 C, Objective-C, C#, PHP, Java, Python, Fortran, VHDL, Tcl, D (some extent) and IDL (Corba, Microsoft, and UNO/OpenOffice flavors).
Packit Service 50c9f2
 .
Packit Service 50c9f2
 Three usages:
Packit Service 50c9f2
 .
Packit Service 50c9f2
    1. Generate documentation from annotated source files to various format:
Packit Service 50c9f2
       - On-line documentation (HTML)
Packit Service 50c9f2
       - Off-line reference manual (LaTeX, RTF, PostScript, hyperlinked PDF, compressed HTML, Unix man pages)
Packit Service 50c9f2
 .
Packit Service 50c9f2
    2. Extract the code structure from undocumented source files.
Packit Service 50c9f2
       Also generate include dependency graphs, inheritance diagrams, and collaboration diagrams.
Packit Service 50c9f2
       Useful to quickly understand code organization in large source distributions.
Packit Service 50c9f2
 .
Packit Service 50c9f2
    3. Create normal documentation (as the doxygen user manual and web-site http://doxygen.org/)
Packit Service 50c9f2
 .
Packit Service 50c9f2
 Install the doxygen-latex package to build LaTeX based documents.
Packit Service 50c9f2
 Install the libclang1 package to use the 'clang assisted parsing'.")
Packit Service 50c9f2
Packit Service 50c9f2
set(CPACK_RESOURCE_FILE_LICENSE     ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
Packit Service 50c9f2
set(CPACK_RESOURCE_FILE_README      ${CMAKE_CURRENT_SOURCE_DIR}/README.md)
Packit Service 50c9f2
Packit Service 50c9f2
# Variables specific to CPack RPM generator
Packit Service 50c9f2
set(CPACK_RPM_PACKAGE_DESCRIPTION   ${CPACK_PACKAGE_DESCRIPTION})
Packit Service 50c9f2
set(CPACK_RPM_PACKAGE_LICENSE       "GPLv2")
Packit Service 50c9f2
set(CPACK_RPM_PACKAGE_GROUP         "Development/Tools")
Packit Service 50c9f2
set(CPACK_RPM_PACKAGE_URL           "http://doxygen.org/")
Packit Service 50c9f2
set(CPACK_RPM_PACKAGE_REQUIRES      "/sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv, libstdc++ >= 2.96")
Packit Service 50c9f2
set(CPACK_RPM_PACKAGE_SUGGESTS      "doxygen-latex, doxygen-doc, doxygen-gui, graphviz, libclang1")
Packit Service 50c9f2
Packit Service 50c9f2
# Variables specific to CPack DEB generator
Packit Service 50c9f2
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
Packit Service 50c9f2
set(CPACK_DEBIAN_PACKAGE_SECTION     "devel")
Packit Service 50c9f2
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE    "http://doxygen.org/")
Packit Service 50c9f2
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS   YES) #set(CPACK_DEBIAN_PACKAGE_DEPENDS    "libc6, libclang1-3.6, libgcc1, libsqlite3-0, libstdc++6, libxapian22")
Packit Service 50c9f2
set(CPACK_DEBIAN_PACKAGE_SUGGESTS    "doxygen-latex, doxygen-doc, doxygen-gui, graphviz, libclang1")
Packit Service 50c9f2
set(CPACK_DEBIAN_PACKAGE_CONFLICTS   "graphviz (<< 1.12)")
Packit Service 50c9f2
set(CPACK_DEBIAN_PACKAGE_MAINTAINER  "Matthias Klose <doko@debian.org>")  # Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Packit Service 50c9f2
Packit Service 50c9f2
# Variables specific to CPack NSIS generator
Packit Service 50c9f2
set(CPACK_NSIS_MUI_ICON         ${CMAKE_CURRENT_SOURCE_DIR}/addon/doxywizard/doxywizard.ico)
Packit Service 50c9f2
set(CPACK_NSIS_URL_INFO_ABOUT   "http://doxygen.org/")
Packit Service 50c9f2
set(CPACK_NSIS_PACKAGE_NAME     ${PROJECT_NAME})
Packit Service 50c9f2
Packit Service 50c9f2
# Variables specific to CPack DragNDrop generator
Packit Service 50c9f2
set(CPACK_DMG_FORMAT            "UDBZ")         # UDRO=UDIF-Read-Only, UDZO=zlib, UDBZ=bzip2 -- See hdiutil
Packit Service 50c9f2
set(CPACK_DMG_VOLUME_NAME       ${PROJECT_NAME})
Packit Service 50c9f2
set(CPACK_DMG_BACKGROUND_IMAGE  ${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen_logo.eps)
Packit Service 50c9f2
Packit Service 50c9f2
if(WIN32)
Packit Service 50c9f2
    set(CPACK_GENERATOR "ZIP;NSIS")
Packit Service 50c9f2
Packit Service 50c9f2
elseif(APPLE)
Packit Service 50c9f2
    set(CPACK_GENERATOR       "ZIP;DragNDrop;PackageMaker;Bundle" )
Packit Service 50c9f2
    set(CPACK_SYSTEM_NAME     "OSX" )
Packit Service 50c9f2
Packit Service 50c9f2
elseif(UNIX)
Packit Service 50c9f2
    # Determine distribution and release
Packit Service 50c9f2
    execute_process(COMMAND lsb_release -si OUTPUT_VARIABLE distribution                   OUTPUT_STRIP_TRAILING_WHITESPACE)
Packit Service 50c9f2
    execute_process(COMMAND lsb_release -sc OUTPUT_VARIABLE release                        OUTPUT_STRIP_TRAILING_WHITESPACE)
Packit Service 50c9f2
    #xecute_process(COMMAND uname -i        OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
Packit Service 50c9f2
    execute_process(COMMAND uname -m        OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
Packit Service 50c9f2
Packit Service 50c9f2
    if(distribution STREQUAL "Debian" OR distribution STREQUAL "Ubuntu")
Packit Service 50c9f2
      set(CPACK_GENERATOR "DEB")
Packit Service 50c9f2
      execute_process(COMMAND dpkg --print-architecture OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
Packit Service 50c9f2
      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE})
Packit Service 50c9f2
Packit Service 50c9f2
    elseif(distribution MATCHES "RedHat.*")
Packit Service 50c9f2
      # extract the major version from RedHat full version (e.g. 6.7 --> 6)
Packit Service 50c9f2
      execute_process(COMMAND lsb_release -sr COMMAND sed s/[.].*//  OUTPUT_VARIABLE redhat_version_major OUTPUT_STRIP_TRAILING_WHITESPACE)
Packit Service 50c9f2
      set(CPACK_GENERATOR "RPM")
Packit Service 50c9f2
      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}.el${redhat_version_major}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
Packit Service 50c9f2
Packit Service 50c9f2
    elseif(distribution MATCHES "openSUSE.*")
Packit Service 50c9f2
      set(CPACK_GENERATOR "RPM")
Packit Service 50c9f2
      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
Packit Service 50c9f2
Packit Service 50c9f2
    elseif(distribution STREQUAL "Fedora")
Packit Service 50c9f2
      set(CPACK_GENERATOR "RPM")
Packit Service 50c9f2
      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.fc${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
Packit Service 50c9f2
Packit Service 50c9f2
    elseif(distribution STREQUAL "Scientific")
Packit Service 50c9f2
      set(CPACK_GENERATOR "RPM")
Packit Service 50c9f2
      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
Packit Service 50c9f2
Packit Service 50c9f2
    else()
Packit Service 50c9f2
      set(CPACK_GENERATOR "RPM;TGZ;STGZ")
Packit Service 50c9f2
      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
Packit Service 50c9f2
    endif()
Packit Service 50c9f2
Packit Service 50c9f2
else()
Packit Service 50c9f2
    # other operating system (not Windows/Apple/Unix)
Packit Service 50c9f2
endif()