if(NOT VERSION)
    set(VERSION "unknown")
endif()

string(REGEX REPLACE "^v?([0-9.]+)-?(.*)$"
    "\\1;\\2" version_result ${VERSION})

list(LENGTH version_result version_result_list_length)

if(version_result_list_length EQUAL 2)
    list(GET version_result 0 version_num)
    list(GET version_result 1 version_gitstamp)
else(version_result_list_length EQUAL 2)
    message("Unable to deduce a meaningful version number. \
Set OVERRIDE_VERSION when you run CMake (cmake .. -DOVERRIDE_VERSION=3.14.159), or \
just build from a git repository.")
    set(version_num "0.0.0")
    set(version_gitstamp "")
endif(version_result_list_length EQUAL 2)

if(version_gitstamp)
    set(version_gitsuffix "~git${version_gitstamp}")
else(version_gitstamp)
    set(version_gitsuffix "")
endif(version_gitstamp)

string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)"
    "\\1;\\2;\\3" version_num_split ${version_num})

list(APPEND version_num_split 0 0 0) #ensure the list(GET )) commands below never fail

list(GET version_num_split 0 CPACK_PACKAGE_VERSION_MAJOR)
list(GET version_num_split 1 CPACK_PACKAGE_VERSION_MINOR)
list(GET version_num_split 2 CPACK_PACKAGE_VERSION_PATCH)

set(version_num "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")

if(NOT DEFINED CPACK_GENERATOR)
    set(CPACK_GENERATOR)
    message(STATUS "Checking if 'package' target should be generated.")
    a_find_program(rpmbuild_path "rpmbuild" FALSE)
    if(rpmbuild_path)
        message(STATUS "rpmbuild found, enabling RPM for the 'package' target.")
        list(APPEND CPACK_GENERATOR RPM)
    else(rpmbuild_path)
        message(STATUS "The 'package' target will not build a RPM.")
    endif(rpmbuild_path)

    a_find_program(dpkg_path "dpkg" FALSE)
    if (dpkg_path)
        message(STATUS "dpkg found, enabling DEB for the 'package' target.")
        list(APPEND CPACK_GENERATOR DEB)
    else(dpkg_path)
        message(STATUS "The 'package' target will not build a DEB.")
    endif(dpkg_path)

    if(NOT CPACK_GENERATOR)
        message(STATUS "Skipping generation of 'package' target.")
    endif()
endif(NOT DEFINED CPACK_GENERATOR)
set(CPACK_GENERATOR ${CPACK_GENERATOR}
    CACHE STRING "Include CPack if non-empty (DEB and/or RPM).")

if(CPACK_GENERATOR)
    message(STATUS "Package version will be set to ${version_num}${version_gitsuffix}.")
    set(CPACK_PACKAGE_VERSION "${version_num}${version_gitsuffix}")
    set(CPACK_PACKAGE_NAME "awesome")
    set(CPACK_DEBIAN_PACKAGE_MAINTAINER "devnull@example.com")
    set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A tiling window manager")
    set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/etc/xdg;/usr/share/xsessions")
    include(CPack)
endif()

# vim: filetype=cmake:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80:foldmethod=marker