1# 2# Copyright by The HDF Group. 3# All rights reserved. 4# 5# This file is part of HDF5. The full HDF5 copyright notice, including 6# terms governing use, modification, and redistribution, is contained in 7# the COPYING file, which can be found at the root of the source code 8# distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. 9# If you do not have access to either file, you may request a copy from 10# help@hdfgroup.org. 11# 12#------------------------------------------------------------------------------- 13macro (EXTERNAL_JPEG_LIBRARY compress_type jpeg_pic) 14 # May need to build JPEG with PIC on x64 machines with gcc 15 # Need to use CMAKE_ANSI_CFLAGS define so that compiler test works 16 17 if (${compress_type} MATCHES "SVN") 18 EXTERNALPROJECT_ADD (JPEG 19 SVN_REPOSITORY ${JPEG_URL} 20 # [SVN_REVISION rev] 21 INSTALL_COMMAND "" 22 CMAKE_ARGS 23 -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} 24 -DJPEG_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT} 25 -DJPEG_EXTERNALLY_CONFIGURED:BOOL=OFF 26 -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 27 -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} 28 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 29 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} 30 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} 31 -DCMAKE_PDB_OUTPUT_DIRECTORY:PATH=${CMAKE_PDB_OUTPUT_DIRECTORY} 32 -DCMAKE_ANSI_CFLAGS:STRING=${jpeg_pic} 33 ) 34 elseif (${compress_type} MATCHES "GIT") 35 EXTERNALPROJECT_ADD (JPEG 36 GIT_REPOSITORY ${JPEG_URL} 37 GIT_TAG ${JPEG_BRANCH} 38 INSTALL_COMMAND "" 39 CMAKE_ARGS 40 -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} 41 -DJPEG_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT} 42 -DJPEG_EXTERNALLY_CONFIGURED:BOOL=OFF 43 -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 44 -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} 45 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 46 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} 47 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} 48 -DCMAKE_PDB_OUTPUT_DIRECTORY:PATH=${CMAKE_PDB_OUTPUT_DIRECTORY} 49 -DCMAKE_ANSI_CFLAGS:STRING=${jpeg_pic} 50 ) 51 elseif (${compress_type} MATCHES "TGZ") 52 EXTERNALPROJECT_ADD (JPEG 53 URL ${JPEG_URL} 54 URL_MD5 "" 55 INSTALL_COMMAND "" 56 CMAKE_ARGS 57 -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} 58 -DJPEG_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT} 59 -DJPEG_EXTERNALLY_CONFIGURED:BOOL=OFF 60 -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 61 -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} 62 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 63 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} 64 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} 65 -DCMAKE_PDB_OUTPUT_DIRECTORY:PATH=${CMAKE_PDB_OUTPUT_DIRECTORY} 66 -DCMAKE_ANSI_CFLAGS:STRING=${jpeg_pic} 67 ) 68 endif () 69 externalproject_get_property (JPEG BINARY_DIR SOURCE_DIR) 70 71##include (${BINARY_DIR}/${JPEG_PACKAGE_NAME}${HDF_PACKAGE_EXT}-targets.cmake) 72# Create imported target jpeg-static 73 add_library(jpeg-static STATIC IMPORTED) 74 HDF_IMPORT_SET_LIB_OPTIONS (jpeg-static "jpeg" STATIC "") 75 add_dependencies (JPEG jpeg-static) 76 set (JPEG_STATIC_LIBRARY "jpeg-static") 77 set (JPEG_LIBRARIES ${JPEG_STATIC_LIBRARY}) 78 if (BUILD_SHARED_LIBS) 79 # Create imported target jpeg-shared 80 add_library(jpeg-shared SHARED IMPORTED) 81 HDF_IMPORT_SET_LIB_OPTIONS (jpeg-shared "jpeg" SHARED "") 82 add_dependencies (JPEG jpeg-shared) 83 set (JPEG_SHARED_LIBRARY "jpeg-shared") 84 set (JPEG_LIBRARIES ${JPEG_LIBRARIES} ${JPEG_SHARED_LIBRARY}) 85 endif () 86 87 set (JPEG_INCLUDE_DIR_GEN "${BINARY_DIR}") 88 set (JPEG_INCLUDE_DIR "${SOURCE_DIR}/src") 89 set (JPEG_FOUND 1) 90 set (JPEG_INCLUDE_DIRS ${JPEG_INCLUDE_DIR_GEN} ${JPEG_INCLUDE_DIR}) 91endmacro () 92 93#------------------------------------------------------------------------------- 94macro (PACKAGE_JPEG_LIBRARY compress_type) 95 add_custom_target (JPEG-GenHeader-Copy ALL 96 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${JPEG_INCLUDE_DIR_GEN}/jconfig.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ 97 COMMENT "Copying ${JPEG_INCLUDE_DIR_GEN}/jconfig.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" 98 ) 99 set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/jconfig.h) 100 if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") 101 add_dependencies (JPEG-GenHeader-Copy JPEG) 102 endif () 103endmacro () 104 105#------------------------------------------------------------------------------- 106macro (EXTERNAL_SZIP_LIBRARY compress_type encoding) 107 if (${compress_type} MATCHES "SVN") 108 EXTERNALPROJECT_ADD (SZIP 109 SVN_REPOSITORY ${SZIP_URL} 110 # [SVN_REVISION rev] 111 INSTALL_COMMAND "" 112 CMAKE_ARGS 113 -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} 114 -DSZIP_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT} 115 -DSZIP_EXTERNALLY_CONFIGURED:BOOL=OFF 116 -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 117 -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} 118 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 119 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} 120 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} 121 -DCMAKE_PDB_OUTPUT_DIRECTORY:PATH=${CMAKE_PDB_OUTPUT_DIRECTORY} 122 -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} 123 -DSZIP_ENABLE_ENCODING:BOOL=${encoding} 124 ) 125 elseif (${compress_type} MATCHES "GIT") 126 EXTERNALPROJECT_ADD (SZIP 127 GIT_REPOSITORY ${SZIP_URL} 128 GIT_TAG ${SZIP_BRANCH} 129 INSTALL_COMMAND "" 130 CMAKE_ARGS 131 -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} 132 -DSZIP_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT} 133 -DSZIP_EXTERNALLY_CONFIGURED:BOOL=OFF 134 -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 135 -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} 136 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 137 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} 138 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} 139 -DCMAKE_PDB_OUTPUT_DIRECTORY:PATH=${CMAKE_PDB_OUTPUT_DIRECTORY} 140 -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} 141 -DSZIP_ENABLE_ENCODING:BOOL=${encoding} 142 ) 143 elseif (${compress_type} MATCHES "TGZ") 144 EXTERNALPROJECT_ADD (SZIP 145 URL ${SZIP_URL} 146 URL_MD5 "" 147 INSTALL_COMMAND "" 148 CMAKE_ARGS 149 -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} 150 -DSZIP_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT} 151 -DSZIP_EXTERNALLY_CONFIGURED:BOOL=OFF 152 -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 153 -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} 154 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 155 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} 156 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} 157 -DCMAKE_PDB_OUTPUT_DIRECTORY:PATH=${CMAKE_PDB_OUTPUT_DIRECTORY} 158 -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} 159 -DSZIP_ENABLE_ENCODING:BOOL=${encoding} 160 ) 161 endif () 162 externalproject_get_property (SZIP BINARY_DIR SOURCE_DIR) 163 164##include (${BINARY_DIR}/${SZIP_PACKAGE_NAME}${HDF_PACKAGE_EXT}-targets.cmake) 165# Create imported target szip-static 166 add_library(szip-static STATIC IMPORTED) 167 HDF_IMPORT_SET_LIB_OPTIONS (szip-static "szip" STATIC "") 168 add_dependencies (SZIP szip-static) 169 set (SZIP_STATIC_LIBRARY "szip-static") 170 set (SZIP_LIBRARIES ${SZIP_STATIC_LIBRARY}) 171 if (BUILD_SHARED_LIBS) 172 # Create imported target szip-shared 173 add_library(szip-shared SHARED IMPORTED) 174 HDF_IMPORT_SET_LIB_OPTIONS (szip-shared "szip" SHARED "") 175 add_dependencies (SZIP szip-shared) 176 set (SZIP_SHARED_LIBRARY "szip-shared") 177 set (SZIP_LIBRARIES ${SZIP_LIBRARIES} ${SZIP_SHARED_LIBRARY}) 178 endif () 179 180 set (SZIP_INCLUDE_DIR_GEN "${BINARY_DIR}") 181 set (SZIP_INCLUDE_DIR "${SOURCE_DIR}/src") 182 set (SZIP_FOUND 1) 183 set (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIR_GEN} ${SZIP_INCLUDE_DIR}) 184endmacro () 185 186#------------------------------------------------------------------------------- 187macro (PACKAGE_SZIP_LIBRARY compress_type) 188 add_custom_target (SZIP-GenHeader-Copy ALL 189 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SZIP_INCLUDE_DIR_GEN}/SZconfig.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ 190 COMMENT "Copying ${SZIP_INCLUDE_DIR_GEN}/SZconfig.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" 191 ) 192 set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/SZconfig.h) 193 if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") 194 add_dependencies (SZIP-GenHeader-Copy SZIP) 195 endif () 196endmacro () 197 198#------------------------------------------------------------------------------- 199macro (EXTERNAL_ZLIB_LIBRARY compress_type) 200 if (${compress_type} MATCHES "SVN") 201 EXTERNALPROJECT_ADD (ZLIB 202 SVN_REPOSITORY ${ZLIB_URL} 203 # [SVN_REVISION rev] 204 INSTALL_COMMAND "" 205 CMAKE_ARGS 206 -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} 207 -DZLIB_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT} 208 -DZLIB_EXTERNALLY_CONFIGURED:BOOL=OFF 209 -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 210 -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} 211 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 212 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} 213 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} 214 -DCMAKE_PDB_OUTPUT_DIRECTORY:PATH=${CMAKE_PDB_OUTPUT_DIRECTORY} 215 -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} 216 ) 217 elseif (${compress_type} MATCHES "GIT") 218 EXTERNALPROJECT_ADD (ZLIB 219 GIT_REPOSITORY ${ZLIB_URL} 220 GIT_TAG ${ZLIB_BRANCH} 221 INSTALL_COMMAND "" 222 CMAKE_ARGS 223 -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} 224 -DZLIB_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT} 225 -DZLIB_EXTERNALLY_CONFIGURED:BOOL=OFF 226 -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 227 -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} 228 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 229 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} 230 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} 231 -DCMAKE_PDB_OUTPUT_DIRECTORY:PATH=${CMAKE_PDB_OUTPUT_DIRECTORY} 232 -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} 233 ) 234 elseif (${compress_type} MATCHES "TGZ") 235 EXTERNALPROJECT_ADD (ZLIB 236 URL ${ZLIB_URL} 237 URL_MD5 "" 238 INSTALL_COMMAND "" 239 CMAKE_ARGS 240 -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} 241 -DZLIB_PACKAGE_EXT:STRING=${HDF_PACKAGE_EXT} 242 -DZLIB_EXTERNALLY_CONFIGURED:BOOL=OFF 243 -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} 244 -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} 245 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 246 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} 247 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} 248 -DCMAKE_PDB_OUTPUT_DIRECTORY:PATH=${CMAKE_PDB_OUTPUT_DIRECTORY} 249 -DCMAKE_ANSI_CFLAGS:STRING=${CMAKE_ANSI_CFLAGS} 250 ) 251 endif () 252 externalproject_get_property (ZLIB BINARY_DIR SOURCE_DIR) 253 254 if (WIN32) 255 set (ZLIB_LIB_NAME "zlib") 256 else () 257 set (ZLIB_LIB_NAME "z") 258 endif () 259##include (${BINARY_DIR}/${ZLIB_PACKAGE_NAME}${HDF_PACKAGE_EXT}-targets.cmake) 260# Create imported target zlib-static 261 add_library(zlib-static STATIC IMPORTED) 262 HDF_IMPORT_SET_LIB_OPTIONS (zlib-static ${ZLIB_LIB_NAME} STATIC "") 263 add_dependencies (ZLIB zlib-static) 264 set (ZLIB_STATIC_LIBRARY "zlib-static") 265 set (ZLIB_LIBRARIES ${ZLIB_STATIC_LIBRARY}) 266 if (BUILD_SHARED_LIBS) 267 # Create imported target zlib-shared 268 add_library(zlib-shared SHARED IMPORTED) 269 HDF_IMPORT_SET_LIB_OPTIONS (zlib-shared ${ZLIB_LIB_NAME} SHARED "") 270 add_dependencies (ZLIB zlib-shared) 271 set (ZLIB_SHARED_LIBRARY "zlib-shared") 272 set (ZLIB_LIBRARIES ${ZLIB_LIBRARIES} ${ZLIB_SHARED_LIBRARY}) 273 endif () 274 275 set (ZLIB_INCLUDE_DIR_GEN "${BINARY_DIR}") 276 set (ZLIB_INCLUDE_DIR "${SOURCE_DIR}") 277 set (ZLIB_FOUND 1) 278 set (ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR_GEN} ${ZLIB_INCLUDE_DIR}) 279endmacro () 280 281#------------------------------------------------------------------------------- 282macro (PACKAGE_ZLIB_LIBRARY compress_type) 283 add_custom_target (ZLIB-GenHeader-Copy ALL 284 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ZLIB_INCLUDE_DIR_GEN}/zconf.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ 285 COMMENT "Copying ${ZLIB_INCLUDE_DIR_GEN}/zconf.h to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/" 286 ) 287 set (EXTERNAL_HEADER_LIST ${EXTERNAL_HEADER_LIST} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/zconf.h) 288 if (${compress_type} MATCHES "GIT" OR ${compress_type} MATCHES "SVN" OR ${compress_type} MATCHES "TGZ") 289 add_dependencies (ZLIB-GenHeader-Copy ZLIB) 290 endif () 291endmacro () 292