1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355
|
IF(WIN32)
# copy installer files
# CONFIGURE_FILE(platforms/windows/msi/WixFragmentRegistry.wxs ${CMAKE_CURRENT_BINARY_DIR}/INSTALL/WixFragmentRegistry.wxs COPYONLY)
# CONFIGURE_FILE(platforms/windows/msi/hugin.warsetup ${CMAKE_CURRENT_BINARY_DIR}/INSTALL/hugin.warsetup )
# bug: CONFIGURE_FILE destroys the bitmaps.
# CONFIGURE_FILE(platforms/windows/msi/top_banner.bmp ${CMAKE_CURRENT_BINARY_DIR}/INSTALL/top_banner.bmp COPYONLY)
# CONFIGURE_FILE(platforms/windows/msi/big_banner.bmp ${CMAKE_CURRENT_BINARY_DIR}/INSTALL/big_banner.bmp COPYONLY)
# install hugin readme, license etc.
INSTALL(FILES AUTHORS COPYING.txt
DESTINATION doc/hugin)
# find the path to enblend and panotools build directories
# and copy required binaries into hugin installation folder
FIND_PATH(PANO13_EXE_DIR PTmender.exe
${SOURCE_BASE_DIR}/Deploy/bin
${PANO13_INCLUDE_DIR}/pano13/tools
${PANO13_INCLUDE_DIR}/pano13/tools/Release
"${PANO13_INCLUDE_DIR}/pano13/tools/Release CMD/win32"
${SOURCE_BASE_DIR}/libpano/tools
"${SOURCE_BASE_DIR}/libpano/pano13/tools/Release CMD/Win32"
${SOURCE_BASE_DIR}/libpano/tools/Release
${SOURCE_BASE_DIR}/libpano13/bin
DOC "Location of pano13 executables"
NO_DEFAULT_PATH)
FILE(GLOB PANO13_EXECUTABLES ${PANO13_EXE_DIR}/PT*.exe ${PANO13_EXE_DIR}/panoinfo.exe ${PANO13_EXE_DIR}/*.dll)
INSTALL(FILES ${PANO13_EXECUTABLES} DESTINATION ${BINDIR})
# TODO: install documentation for panotools?
FIND_PATH(PANO13_DOC_DIR Optimize.txt
${PANO13_INCLUDE_DIR}/../share/pano13/doc
DOC "Location of pano13 documentation"
NO_DEFAULT_PATH)
INSTALL(FILES ${PANO13_DOC_DIR}/AUTHORS
${PANO13_DOC_DIR}/COPYING
${PANO13_DOC_DIR}/README
${PANO13_DOC_DIR}/Optimize.txt
${PANO13_DOC_DIR}/PTblender.readme
${PANO13_DOC_DIR}/PTmender.readme
${PANO13_DOC_DIR}/stitch.txt
DESTINATION doc/panotools)
# install enblend/enfuse files
FILE(GLOB ENBLEND_EXECUTABLES ${ENBLEND_DIR}/bin/*.exe ${ENBLEND_DIR}/bin/*.dll ${ENBLEND_DIR}/*.exe)
FILE(GLOB ENBLEND_DOC_FILES ${ENBLEND_DIR}/doc/*.pdf)
INSTALL(FILES ${ENBLEND_EXECUTABLES} DESTINATION ${BINDIR})
INSTALL(FILES ${ENBLEND_DOC_FILES} DESTINATION doc/enblend)
# install exiftool, for version >=12.88
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
# 64 bit version
FILE(GLOB EXIFTOOL_PATHS LIST_DIRECTORIES true ${SOURCE_BASE_DIR}/exiftool/exiftool-*_64)
ELSE()
# 32 bit version
FILE(GLOB EXIFTOOL_PATHS LIST_DIRECTORIES true ${SOURCE_BASE_DIR}/exiftool/exiftool-*_32)
ENDIF()
# check that we found at least one folder
LIST(LENGTH EXIFTOOL_PATHS EXIFTOOL_COUNT)
IF(EXIFTOOL_COUNT<1)
MESSAGE(ERROR "Exiftool folder not found")
ENDIF()
# file list is sorted, so take last directory has it the highest number
LIST(POP_BACK EXIFTOOL_PATHS EXIFTOOL_PATH)
MESSAGE(STATUS "Exiftool path ${EXIFTOOL_PATH}")
# check that correctly renamed executable is in path
IF(NOT EXISTS "${EXIFTOOL_PATH}/exiftool.exe")
MESSAGE(FATAL_ERROR "exiftool.exe not in exiftool path ${EXIFTOOL_PATH} found. Did you forget to rename exiftool(-k).exe to exiftool.exe?")
ENDIF()
INSTALL(
DIRECTORY "${EXIFTOOL_PATH}/"
DESTINATION ${BINDIR}
)
# now install all necessary DLL
IF(HUGIN_SHARED)
SET(DLL_SEARCH_PATH ${SOURCE_BASE_DIR}/Deploy/bin)
IF(VCPKG_TOOLCHAIN)
LIST(APPEND DLL_SEARCH_PATH ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin)
ENDIF()
FIND_FILE(TIFF_DLL
NAMES libtiff.dll tiff.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/libtiff/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
FIND_FILE(LZMA_DLL
NAMES liblzma.dll lzma.dll
PATHS ${DLL_SEARCH_PATH}
NO_SYSTEM_ENVIRONMENT_PATH
)
FIND_FILE(JPEG_DLL
NAMES jpeg.dll libjpeg.dll jpeg62.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/jpeg-9a/lib
${SOURCE_BASE_DIR}/jpeg-9a/x64/Release
NO_SYSTEM_ENVIRONMENT_PATH
)
FIND_FILE(PNG_DLL
NAMES libpng16.dll libpng15.dll libpng14.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/libpng/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
FIND_FILE(ZLIB_DLL
NAMES zlib1.dll zlib.dll libz.dll libzlib.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/zlib
${SOURCE_BASE_DIR}/zlib/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
FIND_PATH(OPENEXR_BIN_DIR
NAMES OpenEXR-3_2.dll OpenEXR-3_1.dll OpenEXR-3_0.dll
PATHS ${DLL_SEARCH_PATH}
DOC "Location of OpenEXR3 libraries"
NO_SYSTEM_ENVIRONMENT_PATH
NO_DEFAULT_PATH
)
IF(OPENEXR_BIN_DIR)
# DLL for OpenEXR 3.x
FILE(GLOB OPENEXR_DLL
${OPENEXR_BIN_DIR}/OpenEXR*.dll ${OPENEXR_BIN_DIR}/IlmThread*.dll ${OPENEXR_BIN_DIR}/IEx*.dll
${OPENEXR_BIN_DIR}/Imath*.dll ${OPENEXR_BIN_DIR}/deflate.dll
)
ELSE()
# DLL for OpenEXR 2.x
UNSET(OPENEXR_BIND_DIR)
FIND_PATH(OPENEXR_BIN_DIR
NAMES Half-2_5.dll Half-2_4.dll Half-2_3.dll Half.dll libHalf.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/Deploy/lib
${SOURCE_BASE_DIR}/Deploy/lib/Release
${SOURCE_BASE_DIR}/Deploy/bin/Release
DOC "Location of OpenEXR libraries"
NO_SYSTEM_ENVIRONMENT_PATH
NO_DEFAULT_PATH
)
IF(NOT OPENEXR_BIN_DIR)
MESSAGE(FATAL_ERROR "OpenEXR dlls not found in search path")
ENDIF()
FILE(GLOB OPENEXR_DLL
${OPENEXR_BIN_DIR}/Half*.dll ${OPENEXR_BIN_DIR}/IlmImf*.dll ${OPENEXR_BIN_DIR}/IEx*.dll
${OPENEXR_BIN_DIR}/IMath*.dll ${OPENEXR_BIN_DIR}/IlmThread*.dll)
ENDIF()
FIND_FILE(VIGRA_DLL
NAMES vigraimpex.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/vigra/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
IF(NOT HAVE_STD_FILESYSTEM)
FILE(GLOB BOOST_SYSTEM_DLL ${Boost_LIBRARY_DIRS}/*boost_system*.dll)
FILE(GLOB BOOST_FILESYSTEM_DLL ${Boost_LIBRARY_DIRS}/*boost_filesystem*.dll)
LIST(APPEND BOOST_DLLs ${BOOST_SYSTEM_DLL} ${BOOST_FILESYSTEM_DLL})
ENDIF()
FIND_FILE(EXIV2_DLL
NAMES exiv2.dll libexiv2.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/exiv2/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
FIND_FILE(LIBEXPAT_DLL
NAMES libexpat.dll expat.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/expat/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
FIND_FILE(LIBICONV_DLL
NAMES libiconv.dll iconv-2.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/expat/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
FIND_FILE(LIBBROTLI_DLL
NAMES brotlidec.dll
PATHS ${DLL_SEARCH_PATH}
NO_SYSTEM_ENVIRONMENT_PATH
)
FIND_FILE(LIBBROTLI_COMMON_DLL
NAMES brotlicommon.dll
PATHS ${DLL_SEARCH_PATH}
NO_SYSTEM_ENVIRONMENT_PATH
)
IF(BUILD_WITH_EPOXY)
FIND_FILE(EPOXY_DLL
NAMES epoxy-0.dll epoxy.dll
PATHS ${DLL_SEARCH_PATH} ${SOURCE_BASE_DIR}/libepoxy/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
ELSE()
FIND_FILE(GLEW_DLL
NAMES glew32.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/glew/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
ENDIF()
FIND_FILE(LCMS2_DLL
NAMES lcms2.dll liblcms2.dll liblcms2-2.dll lcms.dll
PATHS ${DLL_SEARCH_PATH}
${LCMS2_ROOT_DIR}/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
# hand tuned dll, so that only necesarry dll are install and not all wxWidgets DLL to save space
IF(MSVC)
SET(WXSUFFIX vc)
ELSE()
IF(MINGW)
SET(WXSUFFIX gcc)
ELSE()
MESSAGE(FATAL_ERROR "Unknown target for Win32 wxWidgets DLLs")
ENDIF()
ENDIF()
FIND_PATH(
WXWIDGETS_DLL_PATH
NAME
wxbase330u_${WXSUFFIX}_custom.dll
wxbase321u_${WXSUFFIX}_custom.dll
wxbase320u_${WXSUFFIX}_custom.dll
wxbase317u_${WXSUFFIX}_custom.dll
wxbase316u_${WXSUFFIX}_custom.dll
wxbase315u_${WXSUFFIX}_custom.dll
wxbase314u_${WXSUFFIX}_custom.dll
wxbase313u_${WXSUFFIX}_custom.dll
wxbase312u_${WXSUFFIX}_custom.dll
wxbase311u_${WXSUFFIX}_custom.dll
wxbase310u_${WXSUFFIX}_custom.dll
wxbase305u_${WXSUFFIX}_custom.dll
wxbase304u_${WXSUFFIX}_custom.dll
wxbase303u_${WXSUFFIX}_custom.dll
wxbase302u_${WXSUFFIX}_custom.dll
wxbase301u_${WXSUFFIX}_custom.dll
wxbase300u_${WXSUFFIX}_custom.dll
PATHS
${wxWidgets_LIB_DIR}
${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
IF(NOT WXWIDGETS_DLL_PATH AND CMAKE_SIZEOF_VOID_P EQUAL 8)
# for 64 bit build check also variant with x64
SET(WXSUFFIX "${WXSUFFIX}_x64")
FIND_PATH(
WXWIDGETS_DLL_PATH
NAME
wxbase330u_${WXSUFFIX}_custom.dll
wxbase321u_${WXSUFFIX}_custom.dll
wxbase320u_${WXSUFFIX}_custom.dll
wxbase317u_${WXSUFFIX}_custom.dll
wxbase316u_${WXSUFFIX}_custom.dll
wxbase315u_${WXSUFFIX}_custom.dll
wxbase314u_${WXSUFFIX}_custom.dll
wxbase313u_${WXSUFFIX}_custom.dll
wxbase312u_${WXSUFFIX}_custom.dll
wxbase311u_${WXSUFFIX}_custom.dll
wxbase310u_${WXSUFFIX}_custom.dll
wxbase305u_${WXSUFFIX}_custom.dll
wxbase304u_${WXSUFFIX}_custom.dll
wxbase303u_${WXSUFFIX}_custom.dll
wxbase302u_${WXSUFFIX}_custom.dll
wxbase301u_${WXSUFFIX}_custom.dll
wxbase300u_${WXSUFFIX}_custom.dll
PATHS
${wxWidgets_LIB_DIR}
${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin
NO_SYSTEM_ENVIRONMENT_PATH
)
ENDIF()
MESSAGE(STATUS "wxWidgets DLL path: ${WXWIDGETS_DLL_PATH}")
# first variant is for development versions with 3 numbers, second variant for stable versions with 2 numbers
FILE(GLOB WXWIDGETS_DLL
${WXWIDGETS_DLL_PATH}/wxbase[2-3][0-9][0-9]u_${WXSUFFIX}*.dll ${WXWIDGETS_DLL_PATH}/wxbase[2-3][0-9]u_${WXSUFFIX}*.dll
${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9][0-9]u_core_${WXSUFFIX}*.dll ${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9]u_core_${WXSUFFIX}*.dll
${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9][0-9]u_xrc_${WXSUFFIX}*.dll ${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9]u_xrc_${WXSUFFIX}*.dll
${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9][0-9]u_adv_${WXSUFFIX}*.dll ${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9]u_adv_${WXSUFFIX}*.dll
${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9][0-9]u_gl_${WXSUFFIX}*.dll ${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9]u_gl_${WXSUFFIX}*.dll
${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9][0-9]u_html_${WXSUFFIX}*.dll ${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9]u_html_${WXSUFFIX}*.dll
${WXWIDGETS_DLL_PATH}/wxbase[2-3][0-9][0-9]u_xml_${WXSUFFIX}*.dll ${WXWIDGETS_DLL_PATH}/wxbase[2-3][0-9]u_xml_${WXSUFFIX}*.dll
${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9][0-9]u_aui_${WXSUFFIX}*.dll ${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9]u_aui_${WXSUFFIX}*.dll
${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9][0-9]u_qa_${WXSUFFIX}*.dll ${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9]u_qa_${WXSUFFIX}*.dll
${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9][0-9]u_propgrid_${WXSUFFIX}*.dll ${WXWIDGETS_DLL_PATH}/wxmsw[2-3][0-9]u_propgrid_${WXSUFFIX}*.dll
)
# some checking in ensure all is found okay
list(LENGTH WXWIDGETS_DLL COUNT_WXWIDGETS_DLL)
IF(NOT ${COUNT_WXWIDGETS_DLL} EQUAL 10)
MESSAGE(FATAL_ERROR "Not all necessary wxWidgets dlls could be found.")
ENDIF()
INSTALL(FILES ${TIFF_DLL} ${JPEG_DLL} ${PNG_DLL} ${ZLIB_DLL} ${OPENEXR_DLL} ${VIGRA_DLL}
${BOOST_DLLs} ${EXIV2_DLL} ${LCMS2_DLL}
${WXWIDGETS_DLL}
DESTINATION ${BINDIR}
)
IF(LIBEXPAT_DLL)
INSTALL(FILES ${LIBEXPAT_DLL} DESTINATION ${BINDIR})
ENDIF()
IF(LZMA_DLL)
INSTALL(FILES ${LZMA_DLL} DESTINATION ${BINDIR})
ENDIF()
IF(LIBICONV_DLL)
INSTALL(FILES ${LIBICONV_DLL} DESTINATION ${BINDIR})
ENDIF()
IF(LIBBROTLI_DLL)
INSTALL(FILES ${LIBBROTLI_DLL} ${LIBBROTLI_COMMON_DLL} DESTINATION ${BINDIR})
ENDIF()
IF(BUILD_WITH_EPOXY)
#install epoxy dll
INSTALL(FILES ${EPOXY_DLL} DESTINATION ${BINDIR})
ELSE()
#install glew dll
INSTALL(FILES ${GLEW_DLL} DESTINATION ${BINDIR})
ENDIF()
FIND_FILE(SQLITE3_DLL
NAMES sqlite3.dll libsqlite3.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/sqlite3
NO_SYSTEM_ENVIRONMENT_PATH
)
INSTALL(FILES ${SQLITE3_DLL} DESTINATION ${BINDIR})
IF(HAVE_FFTW)
FIND_FILE(FFTW3_DLL
NAMES libfftw-3.3.dll fftw3.dll
PATHS ${DLL_SEARCH_PATH}
${SOURCE_BASE_DIR}/fftw-3.3.4/fftw-3.3-libs/x64/Release
${SOURCE_BASE_DIR}/fftw-3.3.4/fftw-3.3-libs/x64
${SOURCE_BASE_DIR}/fftw-3.3.4/fftw-3.3-libs/
${SOURCE_BASE_DIR}/fftw-3.3.3/fftw-3.3-libs/x64
${SOURCE_BASE_DIR}/fftw-3.3.3/fftw-3.3-libs/
NO_SYSTEM_ENVIRONMENT_PATH)
INSTALL(FILES ${FFTW3_DLL} DESTINATION ${BINDIR})
ENDIF()
IF(FLANN_FOUND)
FIND_FILE(FLANN_DLL
NAMES flann_cpp.dll
PATHS ${DLL_SEARCH_PATH}
NO_SYSTEM_ENVIRONMENT_PATH)
INSTALL(FILES ${FLANN_DLL} DESTINATION ${BINDIR})
ENDIF()
IF(LAPACK_FOUND)
FIND_FILE(BLAS_DLL
NAMES openblas.dll
PATHS ${DLL_SEARCH_PATH}
NO_SYSTEM_ENVIRONMENT_PATH
)
INSTALL(FILES ${BLAS_DLL} DESTINATION ${BINDIR})
ENDIF()
ENDIF()
ENDIF(WIN32)
|