Blame cmake/packaging.cmake

Packit 01d647
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
Packit 01d647
set(CPACK_PACKAGE_CONTACT "Luis Díaz Más <piponazo@gmail.com>")
Packit 01d647
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
Packit 01d647
Packit 01d647
set(CPACK_SOURCE_GENERATOR TGZ)
Packit 01d647
# https://libwebsockets.org/git/libwebsockets/commit/minimal-examples?id=3e25edf1ee7ea8127e941fd7b664e0e962cfeb85
Packit 01d647
set(CPACK_SOURCE_IGNORE_FILES $(CPACK_SOURCE_IGNORE_FILES) "/.git/" "/build/" "\\\\.tgz$" "\\\\.tar\\\\.gz$" "\\\\.zip$" "/test/tmp/" )
Packit 01d647
Packit 01d647
if ( MSVC )
Packit 01d647
    set(CPACK_GENERATOR ZIP)  # use .zip - less likely to damage bin/exiv2.dll permissions
Packit 01d647
else()
Packit 01d647
    set(CPACK_GENERATOR TGZ)  # MinGW/Cygwin/Linux/MacOS-X etc use .tar.gz
Packit 01d647
endif()
Packit 01d647
Packit 01d647
set (BS "") # Bit Size
Packit 01d647
if ( NOT APPLE )
Packit 01d647
  if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
Packit 01d647
    set (BS 64)
Packit 01d647
  else()
Packit 01d647
    set (BS 32)
Packit 01d647
  endif()
Packit 01d647
endif()
Packit 01d647
Packit 01d647
set (LT "") # Library Type
Packit 01d647
if ( NOT BUILD_SHARED_LIBS )
Packit 01d647
	set (LT Static)
Packit 01d647
endif()
Packit 01d647
Packit 01d647
set (BT "") # Build Type
Packit 01d647
if ( NOT ${CMAKE_BUILD_TYPE} STREQUAL Release )
Packit 01d647
	set (BT ${CMAKE_BUILD_TYPE})
Packit 01d647
endif()
Packit 01d647
Packit 01d647
if ( MINGW OR MSYS )
Packit 01d647
    set (PACKDIR MinGW)
Packit 01d647
elseif ( MSVC )
Packit 01d647
    set (PACKDIR msvc)
Packit 01d647
elseif ( CYGWIN )
Packit 01d647
    set (PACKDIR CYGWIN)
Packit 01d647
elseif ( APPLE )
Packit 01d647
    set (PACKDIR Darwin)
Packit 01d647
elseif ( LINUX )
Packit 01d647
    set (PACKDIR Linux)
Packit 01d647
elseif ( CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" )
Packit 01d647
    set (PACKDIR Unix)
Packit 01d647
else()
Packit 01d647
    set (PACKDIR Linux) # Linux and unsupported systems
Packit 01d647
endif()
Packit 01d647
Packit 01d647
set (BUNDLE_NAME ${PACKDIR})
Packit 01d647
if ( CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" )
Packit 01d647
    set (BUNDLE_NAME ${CMAKE_SYSTEM_NAME})
Packit 01d647
endif()
Packit 01d647
Packit 01d647
set (CC "") # Compiler
Packit 01d647
if ( NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" )
Packit 01d647
  if (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
Packit 01d647
    set (CC Clang)
Packit 01d647
  endif()
Packit 01d647
endif()
Packit 01d647
Packit 01d647
set (VI "") # Video
Packit 01d647
if ( EXIV2_ENABLE_VIDEO )
Packit 01d647
    set (VI Video)
Packit 01d647
endif()
Packit 01d647
Packit 01d647
set (WR "") # WebReady
Packit 01d647
if ( EXIV2_ENABLE_WEBREADY )
Packit 01d647
    set (WR Webready)
Packit 01d647
endif()
Packit 01d647
Packit 01d647
set (VS "") # VisualStudio
Packit 01d647
if ( MSVC )
Packit 01d647
    # VS2015 >= 1900, VS2017 >= 1910, VS2019 >= 1920
Packit 01d647
    if     ( MSVC_VERSION GREATER  1919 )
Packit 01d647
       set(VS 2019)
Packit 01d647
    elseif ( MSVC_VERSION GREATER  1909 )
Packit 01d647
       set(VS 2017)
Packit 01d647
    elseif ( MSVC_VERSION GREATER  1899 )
Packit 01d647
       set(VS 2015)
Packit 01d647
    elseif ( MSVC_VERSION STREQUAL 1800 )
Packit 01d647
       set(VS 2013)
Packit 01d647
    elseif ( MSVC_VERSION STREQUAL 1700 )
Packit 01d647
       set(VS 2012)
Packit 01d647
    elseif ( MSVC_VERSION STREQUAL 1600 )
Packit 01d647
       set(VS 2010)
Packit 01d647
    elseif ( MSVC_VERSION STREQUAL 1500 )
Packit 01d647
       set(VS 2008)
Packit 01d647
    endif()
Packit 01d647
endif()
Packit 01d647
Packit 01d647
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${VS}${BUNDLE_NAME}${BS}${CC}${LT}${BT}${VI}${WR})
Packit 01d647
Packit 01d647
# https://stackoverflow.com/questions/17495906/copying-files-and-including-them-in-a-cpack-archive
Packit 01d647
install(FILES     "${PROJECT_SOURCE_DIR}/samples/exifprint.cpp" DESTINATION "samples")
Packit 01d647
install(DIRECTORY "${PROJECT_SOURCE_DIR}/contrib/"              DESTINATION "contrib")
Packit 01d647
Packit 01d647
# Copy top level documents (eg README.md)
Packit 01d647
# https://stackoverflow.com/questions/21541707/cpack-embed-text-files
Packit 01d647
set( DOCS
Packit 01d647
     README.md
Packit 01d647
     README-CONAN.md
Packit 01d647
     README-SAMPLES.md
Packit 01d647
     license.txt
Packit 01d647
     exiv2.png
Packit 01d647
)
Packit 01d647
foreach(doc ${DOCS})
Packit 01d647
    install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${doc} DESTINATION .)
Packit 01d647
endforeach()
Packit 01d647
Packit 01d647
# copy build/test logs which are only present on Jenkins builds
Packit 01d647
if(EXISTS ${PROJECT_SOURCE_DIR}/build/logs/build.txt)
Packit 01d647
    install(FILES ${PROJECT_SOURCE_DIR}/build/logs/build.txt DESTINATION "logs")
Packit 01d647
endif()
Packit 01d647
if(EXISTS ${PROJECT_SOURCE_DIR}/build/logs/test.txt)
Packit 01d647
    install(FILES ${PROJECT_SOURCE_DIR}/build/logs/test.txt  DESTINATION "logs")
Packit 01d647
endif()
Packit 01d647
Packit 01d647
# Copy releasenotes.txt and appropriate ReadMe.txt (eg releasenotes/${PACKDIR}/ReadMe.txt)
Packit 01d647
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/releasenotes/${PACKDIR}/ReadMe.txt DESTINATION .)
Packit 01d647
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/releasenotes/releasenotes.txt      DESTINATION .)
Packit 01d647
Packit 01d647
include (CPack)