diff options
author | Allen Byrne <50328838+byrnHDF@users.noreply.github.com> | 2023-02-26 23:06:14 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-26 23:06:14 (GMT) |
commit | d7128d144b3b44fb7d190d27a61e6fc6c24e10be (patch) | |
tree | 4b897947da454745372524a64c3522f04098cf0c /config/cmake/LIBAEC | |
parent | 49fdba1091e36df98dd0b2bef2a6246c7372a01b (diff) | |
download | hdf5-d7128d144b3b44fb7d190d27a61e6fc6c24e10be.zip hdf5-d7128d144b3b44fb7d190d27a61e6fc6c24e10be.tar.gz hdf5-d7128d144b3b44fb7d190d27a61e6fc6c24e10be.tar.bz2 |
Add fetchcontent for compression libs and fix cmake config (#2487)
* Add fetchcontent for compression libs and fix cmake config
* MSDOS is a reserved define name
* Add release note and update install doc for FetchContent
* Add CI test for FetchContent
* Use LINK_COMP_LIBS instead of STATIC_LIBRARY for depends
* Use general link
Diffstat (limited to 'config/cmake/LIBAEC')
-rw-r--r-- | config/cmake/LIBAEC/CMakeLists.txt | 519 | ||||
-rw-r--r-- | config/cmake/LIBAEC/CPack.Info.plist.in | 26 | ||||
-rw-r--r-- | config/cmake/LIBAEC/config.h.in | 36 | ||||
-rw-r--r-- | config/cmake/LIBAEC/libaec-config-version.cmake.in | 42 | ||||
-rw-r--r-- | config/cmake/LIBAEC/libaec-config.cmake.in | 59 |
5 files changed, 682 insertions, 0 deletions
diff --git a/config/cmake/LIBAEC/CMakeLists.txt b/config/cmake/LIBAEC/CMakeLists.txt new file mode 100644 index 0000000..212c9bf --- /dev/null +++ b/config/cmake/LIBAEC/CMakeLists.txt @@ -0,0 +1,519 @@ +cmake_minimum_required (VERSION 3.10) +PROJECT (LIBAEC C) + +#----------------------------------------------------------------------------- +# Basic LIBAEC stuff here +#----------------------------------------------------------------------------- +set(CMAKE_C_STANDARD 99) + +set (LIBAEC_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_SYS_STAT_H 1) + set (HAVE_SYS_TYPES_H 1) +endif () + +if (NOT WINDOWS) + TEST_BIG_ENDIAN (WORDS_BIGENDIAN) +endif () + +# Check for __builtin_clzll for faster decoding +check_c_source_compiles( + "int main(void)\n{return __builtin_clzll(1LL);}" + HAVE_DECL___BUILTIN_CLZLL) + +if(NOT HAVE_DECL___BUILTIN_CLZLL) + # With MSVC we can use _BitScanReverse64 + check_c_source_compiles( + "int main(void){unsigned long foo; unsigned __int64 bar=1LL; +return _BitScanReverse64(&foo, bar);}" + HAVE_BSR64) +endif() + +#----------------------------------------------------------------------------- +# Define some CMake variables for use later in the project +#----------------------------------------------------------------------------- +set (LIBAEC_RESOURCES_DIR ${HDF_RESOURCES_DIR}/LIBAEC) +set (LIBAEC_SRC_DIR ${LIBAEC_SOURCE_DIR}/src) +set (LIBAEC_INC_DIR ${LIBAEC_SOURCE_DIR}/include) + +#----------------------------------------------------------------------------- +# Set the core names of all the libraries +#----------------------------------------------------------------------------- +set (LIBAEC_LIB_CORENAME "aec") +set (SZIP_LIB_CORENAME "szaec") + +#----------------------------------------------------------------------------- +# Set the true names of all the libraries if customized by external project +#----------------------------------------------------------------------------- +set (LIBAEC_LIB_NAME "${LIBAEC_EXTERNAL_LIB_PREFIX}${LIBAEC_LIB_CORENAME}") +set (SZIP_LIB_NAME "${LIBAEC_EXTERNAL_LIB_PREFIX}${SZIP_LIB_CORENAME}") + +#----------------------------------------------------------------------------- +# Set the target names of all the libraries +#----------------------------------------------------------------------------- +set (LIBAEC_LIB_TARGET "${LIBAEC_LIB_CORENAME}-static") +set (SZIP_LIB_TARGET "${SZIP_LIB_CORENAME}-static") + +set (libaec_VERS_MAJOR 1) +set (libaec_VERS_MINOR 0) +set (libaec_VERS_RELEASE 6) + +#----------------------------------------------------------------------------- +set (LIBAEC_PACKAGE "libaec") +set (LIBAEC_PACKAGE_NAME "LIBAEC") +set (LIBAEC_PACKAGE_VERSION "${libaec_VERS_MAJOR}.${libaec_VERS_MINOR}") +set (LIBAEC_PACKAGE_VERSION_MAJOR "${libaec_VERS_MAJOR}.${libaec_VERS_MINOR}") +set (LIBAEC_PACKAGE_VERSION_MINOR "${libaec_VERS_RELEASE}") +set (LIBAEC_PACKAGE_STRING "${LIBAEC_PACKAGE_NAME} ${LIBAEC_PACKAGE_VERSION}") +set (LIBAEC_PACKAGE_TARNAME "${LIBAEC_PACKAGE_NAME}${LIBAEC_PACKAGE_EXT}") +set (LIBAEC_PACKAGE_URL "http://www.hdfgroup.org") +set (LIBAEC_PACKAGE_BUGREPORT "help@hdfgroup.org") +set (LIBAEC_PACKAGE_SOVERSION "${libaec_VERS_MAJOR}.${libaec_VERS_MINOR}.${libaec_VERS_RELEASE}") +set (LIBAEC_PACKAGE_SOVERSION_MAJOR "${libaec_VERS_MAJOR}") + + +HDF_DIR_PATHS(${LIBAEC_PACKAGE_NAME}) + +#----------------------------------------------------------------------------- +# Targets built within this project are exported at Install time for use +# by other projects +#----------------------------------------------------------------------------- +if (NOT LIBAEC_EXPORTED_TARGETS) + set (LIBAEC_EXPORTED_TARGETS "libaec-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 SZIP as a sub-project within their build tree +#----------------------------------------------------------------------------- +set_global_variable (LIBAEC_LIBRARIES_TO_EXPORT "") + +#----------------------------------------------------------------------------- +# Mac OS X Options +#----------------------------------------------------------------------------- +if (LIBAEC_BUILD_FRAMEWORKS AND NOT BUILD_SHARED_LIBS) + set (BUILD_SHARED_LIBS ON CACHE BOOL "Build Shared Libraries") +endif () + +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) +endif () + +if (MSVC) + set (CMAKE_MFC_FLAG 0) +endif () + +set (MAKE_SYSTEM) +if (CMAKE_BUILD_TOOL MATCHES "make") + set (MAKE_SYSTEM 1) +endif () + +set (CFG_INIT "/${CMAKE_CFG_INTDIR}") +if (MAKE_SYSTEM) + set (CFG_INIT "") +endif () + +#----------------------------------------------------------------------------- +# Compiler specific flags : Shouldn't there be compiler tests for these +#----------------------------------------------------------------------------- +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") +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 () + +#----------------------------------------------------------------------------- +# Generate the aec_config.h file containing user settings needed by compilation +#----------------------------------------------------------------------------- +configure_file (${LIBAEC_RESOURCES_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) + +#----------------------------------------------------------------------------- +# All libs/tests/examples need the main include directories +#----------------------------------------------------------------------------- +INCLUDE_DIRECTORIES (${LIBAEC_BINARY_DIR} ${LIBAEC_SOURCE_DIR}/src ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + +#----------------------------------------------------------------------------- +# Define LIBAEC Library +#----------------------------------------------------------------------------- +set(LIBAEC_SRCS + ${LIBAEC_SRC_DIR}/encode.c + ${LIBAEC_SRC_DIR}/encode_accessors.c + ${LIBAEC_SRC_DIR}/decode.c +) + +set (LIBAEC_PUBLIC_HEADERS + ${LIBAEC_INC_DIR}/libaec.h +) + +add_library (${LIBAEC_LIB_TARGET} STATIC ${LIBAEC_SRCS} ${LIBAEC_PUBLIC_HEADERS}) +target_include_directories (${LIBAEC_LIB_TARGET} PUBLIC + "$<BUILD_INTERFACE:${LIBAEC_SOURCE_DIR}>" + "$<BUILD_INTERFACE:${LIBAEC_SOURCE_DIR}/include>" + "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>" + "$<INSTALL_INTERFACE:include>") +TARGET_C_PROPERTIES (${LIBAEC_LIB_TARGET} STATIC) +target_link_libraries (${LIBAEC_LIB_TARGET} PRIVATE ${LINK_LIBS}) +H5_SET_LIB_OPTIONS (${LIBAEC_LIB_TARGET} ${LIBAEC_LIB_NAME} STATIC 0) +set_target_properties (${LIBAEC_LIB_TARGET} PROPERTIES + VERSION 0.0.12 SOVERSION 0 + PUBLIC_HEADER "${LIBAEC_PUBLIC_HEADERS}" + LINKER_LANGUAGE C + INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>" +) +set_global_variable (LIBAEC_LIBRARIES_TO_EXPORT ${LIBAEC_LIB_TARGET}) +set (install_targets ${LIBAEC_LIB_TARGET}) + +set(SZIP_SRCS + ${LIBAEC_SRC_DIR}/sz_compat.c +) + +set (SZIP_PUBLIC_HEADERS + ${LIBAEC_INC_DIR}/szlib.h +) + +add_library (${SZIP_LIB_TARGET} STATIC ${SZIP_SRCS} ${SZIP_PUBLIC_HEADERS}) +target_include_directories (${SZIP_LIB_TARGET} PUBLIC "${LIBAEC_SOURCE_DIR};${LIBAEC_SOURCE_DIR}/include;${CMAKE_BINARY_DIR}") +TARGET_C_PROPERTIES (${SZIP_LIB_TARGET} STATIC) +target_link_libraries (${SZIP_LIB_TARGET} PRIVATE ${LIBAEC_LIB_TARGET}) +H5_SET_LIB_OPTIONS (${SZIP_LIB_TARGET} ${SZIP_LIB_NAME} STATIC 0) +set_target_properties (${SZIP_LIB_TARGET} PROPERTIES + VERSION 2.0.1 SOVERSION 2 + PUBLIC_HEADER "${SZIP_PUBLIC_HEADERS}" + LINKER_LANGUAGE C + INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>" +) +set_global_variable (LIBAEC_LIBRARIES_TO_EXPORT "${LIBAEC_LIBRARIES_TO_EXPORT};${SZIP_LIB_TARGET}") +set (install_targets ${install_targets} ${SZIP_LIB_TARGET}) + +#----------------------------------------------------------------------------- +# Add Target(s) to CMake Install for import into other projects +#----------------------------------------------------------------------------- +if (LIBAEC_EXPORTED_TARGETS) + INSTALL_TARGET_PDB (${LIBAEC_LIB_TARGET} ${LIBAEC_INSTALL_BIN_DIR} libraries) + + install ( + TARGETS + ${install_targets} + EXPORT + ${LIBAEC_EXPORTED_TARGETS} + LIBRARY DESTINATION ${LIBAEC_INSTALL_LIB_DIR} COMPONENT libraries + ARCHIVE DESTINATION ${LIBAEC_INSTALL_LIB_DIR} COMPONENT libraries + RUNTIME DESTINATION ${LIBAEC_INSTALL_BIN_DIR} COMPONENT libraries + FRAMEWORK DESTINATION ${LIBAEC_INSTALL_FWRK_DIR} COMPONENT libraries + PUBLIC_HEADER DESTINATION ${LIBAEC_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 file(s) to CMake Install +#----------------------------------------------------------------------------- +#if (NOT LIBAEC_INSTALL_NO_DEVELOPMENT) +# install ( +# FILES ${PROJECT_BINARY_DIR}/aec_config.h +# DESTINATION ${LIBAEC_INSTALL_INCLUDE_DIR} +# COMPONENT headers +# ) +#endif () + +#----------------------------------------------------------------------------- +# Add Target(s) to CMake Install for import into other projects +#----------------------------------------------------------------------------- +if (NOT LIBAEC_EXTERNALLY_CONFIGURED) + install ( + EXPORT ${LIBAEC_EXPORTED_TARGETS} + DESTINATION ${LIBAEC_INSTALL_CMAKE_DIR} + FILE ${LIBAEC_PACKAGE}${LIBAEC_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 LIBAEC_EXTERNALLY_CONFIGURED) + export ( + TARGETS ${LIBAEC_LIBRARIES_TO_EXPORT} ${LIBAEC_LIB_DEPENDENCIES} + FILE ${LIBAEC_PACKAGE}${LIBAEC_PACKAGE_EXT}-targets.cmake + NAMESPACE ${PACKAGE_NAMESPACE} + ) + export (PACKAGE ${LIBAEC_PACKAGE}${LIBAEC_PACKAGE_EXT}) +endif () + +#----------------------------------------------------------------------------- +# Set includes needed for build +#----------------------------------------------------------------------------- +set (LIBAEC_INCLUDES_BUILD_TIME + ${LIBAEC_SRC_DIR} ${LIBAEC_INC_DIR} ${LIBAEC_BINARY_DIR} +) + +#----------------------------------------------------------------------------- +# Set variables needed for installation +#----------------------------------------------------------------------------- +set (LIBAEC_VERSION_STRING ${LIBAEC_PACKAGE_VERSION}) +set (LIBAEC_VERSION_MAJOR ${LIBAEC_PACKAGE_VERSION_MAJOR}) +set (LIBAEC_VERSION_MINOR ${LIBAEC_PACKAGE_VERSION_MINOR}) + +#----------------------------------------------------------------------------- +# Configure the libaec-config.cmake file for the build directory +#----------------------------------------------------------------------------- +set (INCLUDE_INSTALL_DIR ${LIBAEC_INSTALL_INCLUDE_DIR}) +set (SHARE_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/${LIBAEC_INSTALL_CMAKE_DIR}" ) +set (CURRENT_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) +configure_package_config_file ( + ${LIBAEC_RESOURCES_DIR}/libaec-config.cmake.in + "${LIBAEC_BINARY_DIR}/${LIBAEC_PACKAGE}${LIBAEC_PACKAGE_EXT}-config.cmake" + INSTALL_DESTINATION "${LIBAEC_INSTALL_CMAKE_DIR}" + PATH_VARS INCLUDE_INSTALL_DIR SHARE_INSTALL_DIR CURRENT_BUILD_DIR + INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}" +) + +#----------------------------------------------------------------------------- +# Configure the libaec-config.cmake file for the install directory +#----------------------------------------------------------------------------- +set (INCLUDE_INSTALL_DIR ${LIBAEC_INSTALL_INCLUDE_DIR}) +set (SHARE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIBAEC_INSTALL_CMAKE_DIR}" ) +set (CURRENT_BUILD_DIR "${CMAKE_INSTALL_PREFIX}") +configure_package_config_file ( + ${LIBAEC_RESOURCES_DIR}/libaec-config.cmake.in + "${LIBAEC_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LIBAEC_PACKAGE}${LIBAEC_PACKAGE_EXT}-config.cmake" + INSTALL_DESTINATION "${LIBAEC_INSTALL_CMAKE_DIR}" + PATH_VARS INCLUDE_INSTALL_DIR SHARE_INSTALL_DIR CURRENT_BUILD_DIR +) +if (NOT LIBAEC_EXTERNALLY_CONFIGURED) + install ( + FILES ${LIBAEC_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LIBAEC_PACKAGE}${LIBAEC_PACKAGE_EXT}-config.cmake + DESTINATION ${LIBAEC_INSTALL_CMAKE_DIR} + COMPONENT configinstall + ) +endif () + +#----------------------------------------------------------------------------- +# Configure the libaec-config-version.cmake file for the install directory +#----------------------------------------------------------------------------- +if (NOT LIBAEC_EXTERNALLY_CONFIGURED) + configure_file ( + ${LIBAEC_RESOURCES_DIR}/libaec-config-version.cmake.in + ${LIBAEC_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LIBAEC_PACKAGE}${LIBAEC_PACKAGE_EXT}-config-version.cmake @ONLY + ) + install ( + FILES ${LIBAEC_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LIBAEC_PACKAGE}${LIBAEC_PACKAGE_EXT}-config-version.cmake + DESTINATION ${LIBAEC_INSTALL_CMAKE_DIR} + COMPONENT configinstall + ) +endif () + +#----------------------------------------------------------------------------- +# Add Document File(s) to CMake Install +#----------------------------------------------------------------------------- +if (NOT LIBAEC_EXTERNALLY_CONFIGURED) + install ( + FILES + ${LIBAEC_SOURCE_DIR}/README.md + ${LIBAEC_SOURCE_DIR}/INSTALL.md + ${LIBAEC_SOURCE_DIR}/CHANGELOG.md + DESTINATION ${LIBAEC_INSTALL_DATA_DIR} + COMPONENT documents + ) +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 () + +#----------------------------------------------------------------------------- +# Set the cpack variables +#----------------------------------------------------------------------------- +if (NOT LIBAEC_EXTERNALLY_CONFIGURED) + set (CPACK_PACKAGE_VENDOR "HDF_Group") + set (CPACK_PACKAGE_NAME "${LIBAEC_PACKAGE_NAME}") + if (CDASH_LOCAL) + set (CPACK_PACKAGE_VERSION "${LIBAEC_PACKAGE_VERSION}") + else () + set (CPACK_PACKAGE_VERSION "${LIBAEC_PACKAGE_VERSION_STRING}") + endif () + set (CPACK_PACKAGE_VERSION_MAJOR "${LIBAEC_PACKAGE_VERSION_MAJOR}") + set (CPACK_PACKAGE_VERSION_MINOR "${LIBAEC_PACKAGE_VERSION_MINOR}") + set (CPACK_PACKAGE_VERSION_PATCH "") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt") + set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.SZIP") + set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") + set (CPACK_PACKAGE_RELOCATABLE TRUE) + set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "libaec - Adaptive Entropy Coding library by Deutsches Klimarechenzentrum GmbH") + 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 "${LIBAEC_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 "${LIBAEC_PACKAGE_BUGREPORT}") + set (CPACK_NSIS_MODIFY_PATH ON) + set (CPACK_NSIS_PACKAGE_NAME "LIBAEC ${LIBAEC_PACKAGE_VERSION}") + if (WIX_EXECUTABLE) + list (APPEND CPACK_GENERATOR "WIX") + endif () +#WiX variables + set (CPACK_WIX_UNINSTALL "1") + set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/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 "${LIBAEC_RESOURCES_DIR}/hdf.icns") + + option (LIBAEC_PACK_MACOSX_FRAMEWORK "Package the LIBAEC Library in a Framework" OFF) + if (LIBAEC_PACK_MACOSX_FRAMEWORK AND LIBAEC_BUILD_FRAMEWORKS) + set (CPACK_BUNDLE_NAME "${LIBAEC_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 ( + ${LIBAEC_RESOURCES_DIR}/CPack.Info.plist.in + ${LIBAEC_BINARY_DIR}/CMakeFiles/Info.plist @ONLY + ) + configure_file ( + ${LIBAEC_RESOURCES_DIR}/PkgInfo.in + ${LIBAEC_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY + ) + install ( + FILES ${LIBAEC_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 "${LIBAEC_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 "${LIBAEC_BINARY_DIR};LIBAEC;libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${LIBAEC_BINARY_DIR};LIBAEC;headers;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${LIBAEC_BINARY_DIR};LIBAEC;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_group(Documents + EXPANDED + DESCRIPTION "Release notes for libaec" + ) + + cpack_add_component_group(Development + EXPANDED + DESCRIPTION "All of the tools you'll need to develop applications" + ) + + cpack_add_component (libraries + DISPLAY_NAME "LIBAEC Libraries" + REQUIRED + GROUP Runtime + INSTALL_TYPES Full Developer User + ) + cpack_add_component (headers + DISPLAY_NAME "LIBAEC Headers" + DEPENDS libraries + GROUP Development + INSTALL_TYPES Full Developer + ) + cpack_add_component (documents + DISPLAY_NAME "LIBAEC Documents" + GROUP Documents + INSTALL_TYPES Full Developer + ) + cpack_add_component (configinstall + DISPLAY_NAME "LIBAEC CMake files" + DEPENDS libraries + GROUP Development + INSTALL_TYPES Full Developer User + ) + +endif () diff --git a/config/cmake/LIBAEC/CPack.Info.plist.in b/config/cmake/LIBAEC/CPack.Info.plist.in new file mode 100644 index 0000000..08d371b --- /dev/null +++ b/config/cmake/LIBAEC/CPack.Info.plist.in @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>@CPACK_PACKAGE_FILE_NAME@</string> + <key>CFBundleIconFile</key> + <string>@CPACK_BUNDLE_ICON@</string> + <key>CFBundleIdentifier</key> + <string>org.@CPACK_PACKAGE_VENDOR@.@CPACK_PACKAGE_NAME@@CPACK_MODULE_VERSION_SUFFIX@</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>FMWK</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>@CPACK_PACKAGE_VERSIO@</string> + <key>CFBundleShortVersionString</key> + <string>@CPACK_SHORT_VERSION_STRING@</string> + <key>CSResourcesFileMapped</key> + <true/> +</dict> +</plist> diff --git a/config/cmake/LIBAEC/config.h.in b/config/cmake/LIBAEC/config.h.in new file mode 100644 index 0000000..0442548 --- /dev/null +++ b/config/cmake/LIBAEC/config.h.in @@ -0,0 +1,36 @@ +#cmakedefine WORDS_BIGENDIAN +#cmakedefine01 HAVE_DECL___BUILTIN_CLZLL +#cmakedefine01 HAVE_BSR64 +#cmakedefine HAVE_SNPRINTF +#cmakedefine HAVE__SNPRINTF +#cmakedefine HAVE__SNPRINTF_S + +/* Name of package */ +#cmakedefine LIBAEC_PACKAGE "@LIBAEC_PACKAGE@" + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine LIBAEC_PACKAGE_BUGREPORT "@LIBAEC_PACKAGE_BUGREPORT@" + +/* Define to the full name of this package. */ +#cmakedefine LIBAEC_PACKAGE_NAME "@LIBAEC_PACKAGE_NAME@" + +/* Define to the full name and version of this package. */ +#cmakedefine LIBAEC_PACKAGE_STRING "@LIBAEC_PACKAGE_STRING@" + +/* Define to the one symbol short name of this package. */ +#cmakedefine LIBAEC_PACKAGE_TARNAME "@LIBAEC_PACKAGE_TARNAME@" + +/* Define to the version of this package. */ +#cmakedefine LIBAEC_PACKAGE_VERSION "@LIBAEC_PACKAGE_VERSION@" + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS @STDC_HEADERS@ + +/* Version number of package */ +#define VERSION "@LIBAEC_PACKAGE_VERSION@" + +/* Define to empty if `const' does not conform to ANSI C. */ +#cmakedefine const + +/* Define to `unsigned int' if <sys/types.h> does not define. */ +#cmakedefine size_t diff --git a/config/cmake/LIBAEC/libaec-config-version.cmake.in b/config/cmake/LIBAEC/libaec-config-version.cmake.in new file mode 100644 index 0000000..4f0e7ae --- /dev/null +++ b/config/cmake/LIBAEC/libaec-config-version.cmake.in @@ -0,0 +1,42 @@ +#----------------------------------------------------------------------------- +# LIBAEC Version file for install directory +#----------------------------------------------------------------------------- + +set (PACKAGE_VERSION "@LIBAEC_VERSION_STRING@") + +if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" ) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if ("${PACKAGE_FIND_VERSION_MAJOR}" STREQUAL "@LIBAEC_VERSION_MAJOR@") + + # exact match for version @LIBAEC_VERSION_MAJOR@.@LIBAEC_VERSION_MINOR@ + if ("${PACKAGE_FIND_VERSION_MINOR}" STREQUAL "@LIBAEC_VERSION_MINOR@") + + # compatible with any version @LIBAEC_VERSION_MAJOR@.@LIBAEC_VERSION_MINOR@.x + set (PACKAGE_VERSION_COMPATIBLE TRUE) + + if ("${PACKAGE_FIND_VERSION_PATCH}" STREQUAL "@LIBAEC_VERSION_RELEASE@") + set (PACKAGE_VERSION_EXACT TRUE) + + if ("${PACKAGE_FIND_VERSION_TWEAK}" STREQUAL "@LIBAEC_VERSION_SUBRELEASE@") + # not using this yet + endif () + endif () + else () + set (PACKAGE_VERSION_COMPATIBLE FALSE) + endif () + endif () +endif () + +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "") + return() +endif() + +# check that the installed version has the same 32/64bit-ness as the one which is currently searching: +if(NOT "${CMAKE_SIZEOF_VOID_P}" STREQUAL "@CMAKE_SIZEOF_VOID_P@") + math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8") + set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() + diff --git a/config/cmake/LIBAEC/libaec-config.cmake.in b/config/cmake/LIBAEC/libaec-config.cmake.in new file mode 100644 index 0000000..36a116a --- /dev/null +++ b/config/cmake/LIBAEC/libaec-config.cmake.in @@ -0,0 +1,59 @@ +#----------------------------------------------------------------------------- +# LIBAEC Config file for compiling against LIBAEC build directory +#----------------------------------------------------------------------------- +@PACKAGE_INIT@ + +string(TOUPPER @LIBAEC_PACKAGE@ LIBAEC_PACKAGE_NAME) + +set (${LIBAEC_PACKAGE_NAME}_VALID_COMPONENTS static shared) + +#----------------------------------------------------------------------------- +# User Options +#----------------------------------------------------------------------------- +set (${LIBAEC_PACKAGE_NAME}_ENABLE_ENCODING @LIBAEC_ENABLE_ENCODING@) +set (${LIBAEC_PACKAGE_NAME}_BUILD_SHARED_LIBS @BUILD_SHARED_LIBS@) +set (${LIBAEC_PACKAGE_NAME}_EXPORT_LIBRARIES @LIBAEC_LIBRARIES_TO_EXPORT@) + +#----------------------------------------------------------------------------- +# Directories +#----------------------------------------------------------------------------- +set (${LIBAEC_PACKAGE_NAME}_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") + +set (${LIBAEC_PACKAGE_NAME}_SHARE_DIR "@PACKAGE_SHARE_INSTALL_DIR@") +set_and_check (${LIBAEC_PACKAGE_NAME}_BUILD_DIR "@PACKAGE_CURRENT_BUILD_DIR@") + +#----------------------------------------------------------------------------- +# Version Strings +#----------------------------------------------------------------------------- +set (${LIBAEC_PACKAGE_NAME}_VERSION_STRING @LIBAEC_VERSION_STRING@) +set (${LIBAEC_PACKAGE_NAME}_VERSION_MAJOR @LIBAEC_VERSION_MAJOR@) +set (${LIBAEC_PACKAGE_NAME}_VERSION_MINOR @LIBAEC_VERSION_MINOR@) + +#----------------------------------------------------------------------------- +# Don't include targets if this file is being picked up by another +# project which has already build LIBAEC as a subproject +#----------------------------------------------------------------------------- +if (NOT TARGET "@LIBAEC_PACKAGE@") + include (@PACKAGE_SHARE_INSTALL_DIR@/@LIBAEC_PACKAGE@@LIBAEC_PACKAGE_EXT@-targets.cmake) +endif () + +# Handle default component(static) : +if (NOT ${LIBAEC_PACKAGE_NAME}_FIND_COMPONENTS) + set (${LIBAEC_PACKAGE_NAME}_FIND_COMPONENTS static) + set (${LIBAEC_PACKAGE_NAME}_FIND_REQUIRED_static true) +endif () + +# Handle requested components: +list (REMOVE_DUPLICATES ${LIBAEC_PACKAGE_NAME}_FIND_COMPONENTS) +foreach (comp IN LISTS ${LIBAEC_PACKAGE_NAME}_FIND_COMPONENTS) + list (FIND ${LIBAEC_PACKAGE_NAME}_EXPORT_LIBRARIES "@LIBAEC_LIB_CORENAME@-${comp}" HAVE_COMP) + if (${HAVE_COMP} LESS 0) + set (${LIBAEC_PACKAGE_NAME}_${comp}_FOUND 0) + else () + set (${LIBAEC_PACKAGE_NAME}_${comp}_FOUND 1) + string(TOUPPER ${LIBAEC_PACKAGE_NAME}_${comp}_LIBRARY COMP_LIBRARY) + set (${COMP_LIBRARY} ${${COMP_LIBRARY}} @LIBAEC_LIB_CORENAME@-${comp}) + endif () +endforeach () + +check_required_components (${LIBAEC_PACKAGE_NAME}) |