mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-12-27 08:01:04 +08:00
528 lines
21 KiB
CMake
528 lines
21 KiB
CMake
cmake_minimum_required (VERSION 3.12)
|
|
PROJECT (ZLIB C)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Basic ZLIB stuff here
|
|
#-----------------------------------------------------------------------------
|
|
set (ZLIB_PACKAGE_EXT ${HDF_PACKAGE_EXT})
|
|
set (HDF_USE_GNU_DIRS ${HDF5_USE_GNU_DIRS})
|
|
set (CMAKE_OSX_ARCHITECTURES ${CMAKE_OSX_ARCHITECTURES})
|
|
set (CMAKE_TOOLCHAIN_FILE ${CMAKE_TOOLCHAIN_FILE})
|
|
set (PACKAGE_NAMESPACE ${HDF_PACKAGE_NAMESPACE})
|
|
if (MINGW)
|
|
set (WINDOWS 1) # MinGW tries to imitate Windows
|
|
endif ()
|
|
if (WINDOWS)
|
|
set (HAVE_STDDEF_H 1)
|
|
set (HAVE_SYS_TYPES_H 1)
|
|
endif ()
|
|
#
|
|
# Check for unistd.h
|
|
#
|
|
check_include_file(unistd.h Z_HAVE_UNISTD_H)
|
|
CHECK_FUNCTION_EXISTS (memcpy HAVE_MEMCPY)
|
|
CHECK_FUNCTION_EXISTS (vsnprintf HAVE_VSNPRINTF)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Define some CMake variables for use later in the project
|
|
#-----------------------------------------------------------------------------
|
|
set (ZLIB_RESOURCES_DIR ${HDF_RESOURCES_DIR}/ZLIB)
|
|
set (ZLIB_SRC_DIR ${ZLIB_SOURCE_DIR})
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Set the core names of all the libraries
|
|
#-----------------------------------------------------------------------------
|
|
set (ZLIB_LIB_CORENAME "zlib")
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Set the true names of all the libraries if customized by external project
|
|
#-----------------------------------------------------------------------------
|
|
set (ZLIB_LIB_NAME "${ZLIB_EXTERNAL_LIB_PREFIX}${ZLIB_LIB_CORENAME}")
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Set the target names of all the libraries
|
|
#-----------------------------------------------------------------------------
|
|
set (ZLIB_LIB_TARGET "${ZLIB_LIB_CORENAME}-static")
|
|
|
|
set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc)
|
|
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein ${ZLIB_PC} @ONLY)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Generate the zconf.h file containing user settings needed by compilation
|
|
#-----------------------------------------------------------------------------
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein ${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
|
|
|
|
if (DEFINED ADDITIONAL_CMAKE_PREFIX_PATH AND EXISTS "${ADDITIONAL_CMAKE_PREFIX_PATH}")
|
|
set (CMAKE_PREFIX_PATH ${ADDITIONAL_CMAKE_PREFIX_PATH} ${CMAKE_PREFIX_PATH})
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# parse the full version number from zlib.h and include in ZLIB_VERS_INFO
|
|
#-----------------------------------------------------------------------------
|
|
file (READ ${ZLIB_SRC_DIR}/zlib.h _zlib_h_contents)
|
|
string (REGEX REPLACE ".*#define[ \t]+ZLIB_VER_MAJOR[ \t]+([0-9]*).*$"
|
|
"\\1" ZLIB_VERS_MAJOR ${_zlib_h_contents})
|
|
string (REGEX REPLACE ".*#define[ \t]+ZLIB_VER_MINOR[ \t]+([0-9]*).*$"
|
|
"\\1" ZLIB_VERS_MINOR ${_zlib_h_contents})
|
|
string (REGEX REPLACE ".*#define[ \t]+ZLIB_VER_REVISION[ \t]+([0-9]*).*$"
|
|
"\\1" ZLIB_VERS_RELEASE ${_zlib_h_contents})
|
|
string (REGEX REPLACE ".*#define[ \t]+ZLIB_VER_SUBREVISION[ \t]+([0-9]*).*$"
|
|
"\\1" ZLIB_VERS_SUBRELEASE ${_zlib_h_contents})
|
|
#message (STATUS "VERSION: ${ZLIB_VERS_MAJOR}.${ZLIB_VERS_MINOR}.${ZLIB_VERS_RELEASE}-${ZLIB_VERS_SUBRELEASE}")
|
|
string (REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([0-9A-Za-z.]+)\".*"
|
|
"\\1" ZLIB_FULL_VERSION ${_zlib_h_contents})
|
|
#message (STATUS "VERSION: ${ZLIB_FULL_VERSION}")
|
|
|
|
#-----------------------------------------------------------------------------
|
|
set (ZLIB_PACKAGE "zlib")
|
|
set (ZLIB_PACKAGE_NAME "ZLIB")
|
|
set (ZLIB_PACKAGE_VERSION "${ZLIB_VERS_MAJOR}.${ZLIB_VERS_MINOR}")
|
|
set (ZLIB_PACKAGE_VERSION_MAJOR "${ZLIB_VERS_MAJOR}.${ZLIB_VERS_MINOR}")
|
|
set (ZLIB_PACKAGE_VERSION_MINOR "${ZLIB_VERS_RELEASE}")
|
|
set (ZLIB_PACKAGE_STRING "${ZLIB_PACKAGE_NAME} ${ZLIB_PACKAGE_VERSION}-${ZLIB_VERS_SUBRELEASE}")
|
|
set (ZLIB_PACKAGE_TARNAME "zlib")
|
|
set (ZLIB_PACKAGE_URL "http://www.hdfgroup.org")
|
|
set (ZLIB_PACKAGE_BUGREPORT "help@hdfgroup.org")
|
|
set (ZLIB_PACKAGE_SOVERSION "${ZLIB_VERS_MAJOR}.${ZLIB_VERS_MINOR}.${ZLIB_VERS_RELEASE}")
|
|
set (ZLIB_PACKAGE_SOVERSION_MAJOR "${ZLIB_VERS_MAJOR}")
|
|
|
|
|
|
HDF_DIR_PATHS(${ZLIB_PACKAGE_NAME})
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Targets built within this project are exported at Install time for use
|
|
# by other projects
|
|
#-----------------------------------------------------------------------------
|
|
if (NOT ZLIB_EXPORTED_TARGETS)
|
|
set (ZLIB_EXPORTED_TARGETS "zlib-targets")
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# To include a library in the list exported by the project AT BUILD TIME,
|
|
# add it to this variable. This is NOT used by Make Install, but for projects
|
|
# which include zlib as a sub-project within their build tree
|
|
#-----------------------------------------------------------------------------
|
|
set_global_variable (ZLIB_LIBRARIES_TO_EXPORT "")
|
|
|
|
set (CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# When building utility executables that generate other (source) files :
|
|
# we make use of the following variables defined in the root CMakeLists.
|
|
# Certain systems may add /Debug or /Release to output paths
|
|
# and we need to call the executable from inside the CMake configuration
|
|
#-----------------------------------------------------------------------------
|
|
set (EXE_EXT "")
|
|
if (WIN32)
|
|
set (EXE_EXT ".exe")
|
|
add_definitions (-D_BIND_TO_CURRENT_VCLIBS_VERSION=1)
|
|
add_definitions (-D_CRT_SECURE_NO_WARNINGS)
|
|
add_definitions (-D_CONSOLE)
|
|
add_definitions (-D_CRT_NONSTDC_NO_DEPRECATE)
|
|
endif ()
|
|
|
|
if (MSVC)
|
|
set (CMAKE_MFC_FLAG 0)
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Compiler specific flags : Shouldn't there be compiler tests for these
|
|
#-----------------------------------------------------------------------------
|
|
if (CMAKE_COMPILER_IS_GNUCC)
|
|
set (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -Wno-strict-prototypes")
|
|
endif ()
|
|
if (CMAKE_C_COMPILER_ID MATCHES "IntelLLVM" OR CMAKE_C_COMPILER_ID MATCHES "[Cc]lang")
|
|
set (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -Wno-deprecated-non-prototype -Wno-implicit-function-declaration")
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# This is in here to help some of the GCC based IDES like Eclipse
|
|
# and code blocks parse the compiler errors and warnings better.
|
|
#-----------------------------------------------------------------------------
|
|
if (CMAKE_COMPILER_IS_GNUCC)
|
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0")
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# All libs/tests/examples need the main include directories
|
|
#-----------------------------------------------------------------------------
|
|
set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES
|
|
"${ZLIB_BINARY_DIR};${ZLIB_SOURCE_DIR};${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
|
|
)
|
|
|
|
#============================================================================
|
|
# zlib
|
|
#============================================================================
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Define zlib Library
|
|
#-----------------------------------------------------------------------------
|
|
set(ZLIB_PUBLIC_HDRS
|
|
${CMAKE_CURRENT_BINARY_DIR}/zconf.h
|
|
zlib.h
|
|
)
|
|
set(ZLIB_PRIVATE_HDRS
|
|
crc32.h
|
|
deflate.h
|
|
gzguts.h
|
|
inffast.h
|
|
inffixed.h
|
|
inflate.h
|
|
inftrees.h
|
|
trees.h
|
|
zutil.h
|
|
)
|
|
set(ZLIB_SRCS
|
|
adler32.c
|
|
compress.c
|
|
crc32.c
|
|
deflate.c
|
|
gzclose.c
|
|
gzlib.c
|
|
gzread.c
|
|
gzwrite.c
|
|
inflate.c
|
|
infback.c
|
|
inftrees.c
|
|
inffast.c
|
|
trees.c
|
|
uncompr.c
|
|
zutil.c
|
|
)
|
|
|
|
if(NOT MINGW)
|
|
set(ZLIB_DLL_SRCS
|
|
win32/zlib1.rc # If present will override custom build rule below.
|
|
)
|
|
endif()
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCC)
|
|
if(ASM686)
|
|
set(ZLIB_ASMS contrib/asm686/match.S)
|
|
elseif (AMD64)
|
|
set(ZLIB_ASMS contrib/amd64/amd64-match.S)
|
|
endif ()
|
|
|
|
if(ZLIB_ASMS)
|
|
add_definitions(-DASMV)
|
|
set_source_files_properties (${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
|
|
endif()
|
|
endif()
|
|
|
|
if(MSVC)
|
|
if(ASM686)
|
|
enable_language(ASM_MASM)
|
|
set(ZLIB_ASMS
|
|
contrib/masmx86/inffas32.asm
|
|
contrib/masmx86/match686.asm
|
|
)
|
|
elseif (AMD64)
|
|
enable_language(ASM_MASM)
|
|
set(ZLIB_ASMS
|
|
contrib/masmx64/gvmat64.asm
|
|
contrib/masmx64/inffasx64.asm
|
|
)
|
|
endif()
|
|
|
|
if(ZLIB_ASMS)
|
|
add_definitions(-DASMV -DASMINF)
|
|
endif()
|
|
endif()
|
|
|
|
if(MINGW)
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
|
|
COMMAND ${CMAKE_RC_COMPILER}
|
|
-D GCC_WINDRES
|
|
-I ${CMAKE_CURRENT_SOURCE_DIR}
|
|
-I ${CMAKE_CURRENT_BINARY_DIR}
|
|
-o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
|
|
-i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc)
|
|
set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
|
|
endif()
|
|
|
|
add_library (${ZLIB_LIB_TARGET} STATIC ${ZLIB_SRCS} ${ZLIB_PRIVATE_HDRS} ${ZLIB_PUBLIC_HDRS})
|
|
if (MSVC AND CMAKE_CL_64)
|
|
set_target_properties (${ZLIB_LIB_TARGET} PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64")
|
|
endif ()
|
|
target_include_directories(${ZLIB_LIB_TARGET} PRIVATE "${CMAKE_BINARY_DIR}")
|
|
TARGET_C_PROPERTIES (${ZLIB_LIB_TARGET} STATIC)
|
|
target_link_libraries (${ZLIB_LIB_TARGET} PRIVATE ${LINK_LIBS})
|
|
H5_SET_LIB_OPTIONS (${ZLIB_LIB_TARGET} ${ZLIB_LIB_NAME} STATIC 0)
|
|
set_target_properties(${ZLIB_LIB_TARGET} PROPERTIES
|
|
PUBLIC_HEADER ""
|
|
LINKER_LANGUAGE C
|
|
INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
|
|
)
|
|
set_global_variable (ZLIB_LIBRARIES_TO_EXPORT ${ZLIB_LIB_TARGET})
|
|
set (install_targets ${ZLIB_LIB_TARGET})
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Add Target(s) to CMake Install for import into other projects
|
|
#-----------------------------------------------------------------------------
|
|
if (ZLIB_EXPORTED_TARGETS)
|
|
INSTALL_TARGET_PDB (${ZLIB_LIB_TARGET} ${ZLIB_INSTALL_BIN_DIR} libraries)
|
|
|
|
install (
|
|
TARGETS
|
|
${install_targets}
|
|
EXPORT
|
|
${ZLIB_EXPORTED_TARGETS}
|
|
LIBRARY DESTINATION ${ZLIB_INSTALL_LIB_DIR} COMPONENT libraries
|
|
ARCHIVE DESTINATION ${ZLIB_INSTALL_LIB_DIR} COMPONENT libraries
|
|
RUNTIME DESTINATION ${ZLIB_INSTALL_BIN_DIR} COMPONENT libraries
|
|
FRAMEWORK DESTINATION ${ZLIB_INSTALL_FWRK_DIR} COMPONENT libraries
|
|
PUBLIC_HEADER DESTINATION ${ZLIB_INSTALL_INCLUDE_DIR} COMPONENT headers
|
|
)
|
|
endif ()
|
|
|
|
include (CMakePackageConfigHelpers)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Check for Installation Utilities
|
|
#-----------------------------------------------------------------------------
|
|
if (WIN32)
|
|
set (PF_ENV_EXT "(x86)")
|
|
find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS")
|
|
if(NOT CPACK_WIX_ROOT)
|
|
file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT)
|
|
endif ()
|
|
find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin")
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Add Target(s) to CMake Install for import into other projects
|
|
#-----------------------------------------------------------------------------
|
|
if (NOT ZLIB_EXTERNALLY_CONFIGURED)
|
|
install (
|
|
EXPORT ${ZLIB_EXPORTED_TARGETS}
|
|
DESTINATION ${ZLIB_INSTALL_CMAKE_DIR}
|
|
FILE ${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-targets.cmake
|
|
NAMESPACE ${PACKAGE_NAMESPACE}
|
|
COMPONENT configinstall
|
|
)
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Export all exported targets to the build tree for use by parent project
|
|
#-----------------------------------------------------------------------------
|
|
if (NOT ZLIB_EXTERNALLY_CONFIGURED)
|
|
export (
|
|
TARGETS ${ZLIB_LIBRARIES_TO_EXPORT} ${ZLIB_LIB_DEPENDENCIES}
|
|
FILE ${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-targets.cmake
|
|
NAMESPACE ${PACKAGE_NAMESPACE}
|
|
)
|
|
export (PACKAGE ${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT})
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Set includes needed for build
|
|
#-----------------------------------------------------------------------------
|
|
set (ZLIB_INCLUDES_BUILD_TIME
|
|
${ZLIB_SRC_DIR} ${ZLIB_BINARY_DIR}
|
|
)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Set variables needed for installation
|
|
#-----------------------------------------------------------------------------
|
|
set (ZLIB_VERSION_STRING ${ZLIB_PACKAGE_VERSION})
|
|
set (ZLIB_VERSION_MAJOR ${ZLIB_PACKAGE_VERSION_MAJOR})
|
|
set (ZLIB_VERSION_MINOR ${ZLIB_PACKAGE_VERSION_MINOR})
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Configure the zlib-config.cmake file for the build directory
|
|
#-----------------------------------------------------------------------------
|
|
set (INCLUDE_INSTALL_DIR ${ZLIB_INSTALL_INCLUDE_DIR})
|
|
set (SHARE_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/${ZLIB_INSTALL_CMAKE_DIR}" )
|
|
set (CURRENT_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}" )
|
|
configure_package_config_file (
|
|
${ZLIB_RESOURCES_DIR}/zlib-config.cmake.in
|
|
"${ZLIB_BINARY_DIR}/${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-config.cmake"
|
|
INSTALL_DESTINATION "${ZLIB_INSTALL_CMAKE_DIR}"
|
|
PATH_VARS INCLUDE_INSTALL_DIR SHARE_INSTALL_DIR CURRENT_BUILD_DIR
|
|
INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}"
|
|
)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Configure the zlib-config.cmake file for the install directory
|
|
#-----------------------------------------------------------------------------
|
|
set (INCLUDE_INSTALL_DIR ${ZLIB_INSTALL_INCLUDE_DIR})
|
|
set (SHARE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${ZLIB_INSTALL_CMAKE_DIR}" )
|
|
set (CURRENT_BUILD_DIR "${CMAKE_INSTALL_PREFIX}" )
|
|
configure_package_config_file (
|
|
${ZLIB_RESOURCES_DIR}/zlib-config.cmake.in
|
|
"${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-config.cmake"
|
|
INSTALL_DESTINATION "${ZLIB_INSTALL_CMAKE_DIR}"
|
|
PATH_VARS INCLUDE_INSTALL_DIR SHARE_INSTALL_DIR CURRENT_BUILD_DIR
|
|
)
|
|
if (NOT ZLIB_EXTERNALLY_CONFIGURED)
|
|
install (
|
|
FILES ${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-config.cmake
|
|
DESTINATION ${ZLIB_INSTALL_CMAKE_DIR}
|
|
COMPONENT configinstall
|
|
)
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Configure the ZLIB-config-version.cmake file for the install directory
|
|
#-----------------------------------------------------------------------------
|
|
if (NOT ZLIB_EXTERNALLY_CONFIGURED)
|
|
configure_file (
|
|
${ZLIB_RESOURCES_DIR}/zlib-config-version.cmake.in
|
|
${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-config-version.cmake @ONLY
|
|
)
|
|
install (
|
|
FILES ${ZLIB_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${ZLIB_PACKAGE}${ZLIB_PACKAGE_EXT}-config-version.cmake
|
|
DESTINATION ${ZLIB_INSTALL_CMAKE_DIR}
|
|
COMPONENT configinstall
|
|
)
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Check for Installation Utilities
|
|
#-----------------------------------------------------------------------------
|
|
if (WIN32)
|
|
set (PF_ENV_EXT "(x86)")
|
|
find_program (NSIS_EXECUTABLE NSIS.exe PATHS "$ENV{ProgramFiles}\\NSIS" "$ENV{ProgramFiles${PF_ENV_EXT}}\\NSIS")
|
|
if(NOT CPACK_WIX_ROOT)
|
|
file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT)
|
|
endif()
|
|
find_program (WIX_EXECUTABLE candle PATHS "${CPACK_WIX_ROOT}/bin")
|
|
endif ()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Configure the LICENSE.txt file for the windows binary package
|
|
#-----------------------------------------------------------------------------
|
|
if (WIN32)
|
|
configure_file (${ZLIB_SOURCE_DIR}/LICENSE ${ZLIB_BINARY_DIR}/ZLIB_LICENSE.txt @ONLY)
|
|
else ()
|
|
configure_file (${ZLIB_SOURCE_DIR}/LICENSE ${ZLIB_BINARY_DIR}/ZLIB_LICENSE @ONLY)
|
|
endif ()
|
|
configure_file (${ZLIB_SOURCE_DIR}/README ${ZLIB_BINARY_DIR}/ZLIB_README @ONLY)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Set the cpack variables
|
|
#-----------------------------------------------------------------------------
|
|
if (NOT ZLIB_EXTERNALLY_CONFIGURED)
|
|
set (CPACK_PACKAGE_VENDOR "HDF_Group")
|
|
set (CPACK_PACKAGE_NAME "${ZLIB_PACKAGE_NAME}")
|
|
if (NOT WIN32 OR ZLIB_VERS_SUBRELEASE MATCHES "^[0-9]+$")
|
|
set (CPACK_PACKAGE_VERSION "${ZLIB_PACKAGE_VERSION_STRING}")
|
|
else ()
|
|
set (CPACK_PACKAGE_VERSION "${ZLIB_PACKAGE_VERSION}")
|
|
endif ()
|
|
set (CPACK_PACKAGE_VERSION_MAJOR "${ZLIB_PACKAGE_VERSION_MAJOR}")
|
|
set (CPACK_PACKAGE_VERSION_MINOR "${ZLIB_PACKAGE_VERSION_MINOR}")
|
|
set (CPACK_PACKAGE_VERSION_PATCH "")
|
|
set (CPACK_RESOURCE_FILE_LICENSE "${ZLIB_BINARY_DIR}/ZLIB_LICENSE")
|
|
set (CPACK_PACKAGE_DESCRIPTION_FILE "${ZLIB_BINARY_DIR}/ZLIB_README")
|
|
set (CPACK_RESOURCE_FILE_README "${ZLIB_BINARY_DIR}/ZLIB_README")
|
|
set (CPACK_PACKAGE_RELOCATABLE TRUE)
|
|
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "zlib Installation")
|
|
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}")
|
|
|
|
set (CPACK_GENERATOR "TGZ")
|
|
if (WIN32)
|
|
set (CPACK_GENERATOR "ZIP")
|
|
|
|
if (NSIS_EXECUTABLE)
|
|
list (APPEND CPACK_GENERATOR "NSIS")
|
|
endif ()
|
|
# Installers for 32- vs. 64-bit CMake:
|
|
# - Root install directory (displayed to end user at installer-run time)
|
|
# - "NSIS package/display name" (text used in the installer GUI)
|
|
# - Registry key used to store info about the installation
|
|
set (CPACK_NSIS_PACKAGE_NAME "${ZLIB_PACKAGE_STRING}")
|
|
if (CMAKE_CL_64)
|
|
set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
|
|
set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)")
|
|
else ()
|
|
set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
|
|
set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
|
|
endif ()
|
|
set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}")
|
|
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_NAME}\\\\${CPACK_PACKAGE_VERSION}")
|
|
set (CPACK_NSIS_CONTACT "${ZLIB_PACKAGE_BUGREPORT}")
|
|
set (CPACK_NSIS_MODIFY_PATH ON)
|
|
set (CPACK_NSIS_PACKAGE_NAME "ZLIB ${ZLIB_PACKAGE_VERSION}")
|
|
if (WIX_EXECUTABLE)
|
|
list (APPEND CPACK_GENERATOR "WIX")
|
|
endif ()
|
|
#WiX variables
|
|
set (CPACK_WIX_UNINSTALL "1")
|
|
set (CPACK_RESOURCE_FILE_LICENSE "${ZLIB_BINARY_DIR}/ZLIB_LICENSE.txt")
|
|
elseif (APPLE)
|
|
list (APPEND CPACK_GENERATOR "STGZ")
|
|
list (APPEND CPACK_GENERATOR "DragNDrop")
|
|
set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
|
|
set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}")
|
|
#set (CPACK_PACKAGE_ICON "${ZLIB_RESOURCES_DIR}/hdf.icns")
|
|
|
|
option (ZLIB_PACK_MACOSX_FRAMEWORK "Package the ZLIB Library in a Framework" OFF)
|
|
if (ZLIB_PACK_MACOSX_FRAMEWORK AND ZLIB_BUILD_FRAMEWORKS)
|
|
set (CPACK_BUNDLE_NAME "${ZLIB_PACKAGE_STRING}")
|
|
set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in /
|
|
set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/")
|
|
set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}")
|
|
#-----------------------------------------------------------------------------
|
|
# Configure the Info.plist file for the install bundle
|
|
#-----------------------------------------------------------------------------
|
|
configure_file (
|
|
${ZLIB_RESOURCES_DIR}/CPack.Info.plist.in
|
|
${ZLIB_BINARY_DIR}/CMakeFiles/Info.plist @ONLY
|
|
)
|
|
configure_file (
|
|
${ZLIB_RESOURCES_DIR}/PkgInfo.in
|
|
${ZLIB_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY
|
|
)
|
|
install (
|
|
FILES ${ZLIB_BINARY_DIR}/CMakeFiles/PkgInfo
|
|
DESTINATION ..
|
|
)
|
|
endif ()
|
|
else ()
|
|
list (APPEND CPACK_GENERATOR "STGZ")
|
|
set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}")
|
|
set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
|
|
|
|
set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries")
|
|
set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${ZLIB_PACKAGE_BUGREPORT}")
|
|
|
|
# list (APPEND CPACK_GENERATOR "RPM")
|
|
set (CPACK_RPM_PACKAGE_RELEASE "1")
|
|
set (CPACK_RPM_COMPONENT_INSTALL ON)
|
|
set (CPACK_RPM_PACKAGE_RELOCATABLE ON)
|
|
endif ()
|
|
|
|
# By default, do not warn when built on machines using only VS Express:
|
|
if (NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
|
|
set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
|
|
endif ()
|
|
include (InstallRequiredSystemLibraries)
|
|
|
|
set (CPACK_INSTALL_CMAKE_PROJECTS "${ZLIB_BINARY_DIR};ZLIB;libraries;/")
|
|
set (CPACK_INSTALL_CMAKE_PROJECTS "${ZLIB_BINARY_DIR};ZLIB;configinstall;/")
|
|
|
|
set (CPACK_ALL_INSTALL_TYPES Full Developer User)
|
|
set (CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything")
|
|
|
|
set(CPACK_COMPONENTS_ALL libraries headers documents configinstall)
|
|
|
|
include (CPack)
|
|
|
|
cpack_add_component_group(Runtime)
|
|
|
|
cpack_add_component (libraries
|
|
DISPLAY_NAME "ZLIB Libraries"
|
|
REQUIRED
|
|
GROUP Runtime
|
|
INSTALL_TYPES Full Developer User
|
|
)
|
|
cpack_add_component (configinstall
|
|
DISPLAY_NAME "ZLIB CMake files"
|
|
DEPENDS libraries
|
|
GROUP Development
|
|
INSTALL_TYPES Full Developer User
|
|
)
|
|
|
|
endif ()
|