commit
2f0104879a
@ -1,10 +1,4 @@
|
||||
# CMake build system for exiv2 library and executables
|
||||
# Copyright 2015- Daniel Kaneider <danielkaneider@users.sf.net>
|
||||
# Copyright 2010-2012 Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
# Copyright 2008 Patrick Spendrin <ps_ml at gmx dot de>
|
||||
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
# CMakeLists.txt for exiv2 library
|
||||
|
||||
cmake_minimum_required( VERSION 3.1.0 )
|
||||
project( exiv2 )
|
||||
@ -30,67 +24,66 @@ set( GENERIC_LIB_VERSION "26.0.0" )
|
||||
set( GENERIC_LIB_SOVERSION "26" )
|
||||
|
||||
# options and their default values
|
||||
option( BUILD_SHARED_LIBS "Build exiv2lib as a shared library" ON )
|
||||
option( EXIV2_ENABLE_XMP "Build with XMP metadata support" ON )
|
||||
option( EXIV2_ENABLE_LIBXMP "Build a static convenience Library for XMP" ON )
|
||||
option( EXIV2_ENABLE_PNG "Build with png support (requires libz)" ON )
|
||||
option( EXIV2_ENABLE_NLS "Build native language support (requires gettext)" ON )
|
||||
option( EXIV2_ENABLE_PRINTUCS2 "Build with Printucs2" ON )
|
||||
option( EXIV2_ENABLE_LENSDATA "Build including lens data" ON )
|
||||
option( EXIV2_ENABLE_COMMERCIAL "Build with the EXV_COMMERCIAL_VERSION symbol set" OFF )
|
||||
option( EXIV2_ENABLE_BUILD_SAMPLES "Build the unit tests" ON )
|
||||
option( EXIV2_ENABLE_BUILD_PO "Build translations files" OFF )
|
||||
option( EXIV2_ENABLE_VIDEO "Build video support into library" OFF )
|
||||
option( EXIV2_ENABLE_WEBREADY "Build webready support into library" OFF )
|
||||
option( EXIV2_ENABLE_DYNAMIC_RUNTIME "Use dynamic runtime (used for static libs)" OFF )
|
||||
if (WIN32)
|
||||
option( EXIV2_ENABLE_WIN_UNICODE "Use Unicode paths (wstring) on Windows" OFF )
|
||||
option( EXIV2_ENABLE_CURL "USE Libcurl for HttpIo" OFF )
|
||||
option( EXIV2_ENABLE_SSH "USE Libssh for SshIo" OFF )
|
||||
else()
|
||||
option( EXIV2_ENABLE_CURL "USE Libcurl for HttpIo" ON )
|
||||
option( EXIV2_ENABLE_SSH "USE Libssh for SshIo" ON )
|
||||
endif()
|
||||
option( EXIV2_ENABLE_TOOLS "Build exiv2 executable" ON )
|
||||
option( BUILD_SHARED_LIBS "Build exiv2lib as a shared library" ON )
|
||||
option( EXIV2_ENABLE_XMP "Build with XMP metadata support" ON )
|
||||
option( EXIV2_ENABLE_LIBXMP "Build a static convenience Library for XMP" ON )
|
||||
option( EXIV2_ENABLE_PNG "Build with png support (requires libz)" ON )
|
||||
option( EXIV2_ENABLE_NLS "Build native language support (requires gettext)" ON )
|
||||
option( EXIV2_ENABLE_PRINTUCS2 "Build with Printucs2" ON )
|
||||
option( EXIV2_ENABLE_LENSDATA "Build including lens data" ON )
|
||||
option( EXIV2_ENABLE_COMMERCIAL "Build with the EXV_COMMERCIAL_VERSION symbol set" OFF )
|
||||
option( EXIV2_ENABLE_VIDEO "Build video support into library" OFF )
|
||||
option( EXIV2_ENABLE_WEBREADY "Build webready support into library" OFF )
|
||||
option( EXIV2_ENABLE_DYNAMIC_RUNTIME "Use dynamic runtime (used for static libs)" OFF )
|
||||
option( EXIV2_ENABLE_WIN_UNICODE "Use Unicode paths (wstring) on Windows" OFF )
|
||||
option( EXIV2_ENABLE_CURL "USE Libcurl for HttpIo" OFF )
|
||||
option( EXIV2_ENABLE_SSH "USE Libssh for SshIo" OFF )
|
||||
option( EXIV2_BUILD_SAMPLES "Build sample applications" ON )
|
||||
option( EXIV2_BUILD_PO "Build translations files" OFF )
|
||||
option( EXIV2_BUILD_EXIV2_COMMAND "Build exiv2 command-line executable" ON )
|
||||
|
||||
include(config/findDependencies.cmake)
|
||||
include(config/compilerFlags.cmake)
|
||||
if ( EXIV2_ENABLE_WEBREADY )
|
||||
set ( EXIV2_ENABLE_CURL ON )
|
||||
set ( EXIV2_ENABLE_CURL ON )
|
||||
set ( EXIV2_ENABLE_SSH ON )
|
||||
endif()
|
||||
|
||||
if( EXIV2_ENABLE_COMMERCIAL )
|
||||
set (EXIV2_ENABLE_LENSDATA OFF)
|
||||
set (EXIV2_ENABLE_NLS OFF)
|
||||
endif()
|
||||
|
||||
if( MSVC )
|
||||
set(CMAKE_DEBUG_POSTFIX "d")
|
||||
endif()
|
||||
|
||||
if( EXIV2_ENABLE_XMP )
|
||||
set( HAVE_XMP_TOOLKIT ON )
|
||||
endif()
|
||||
|
||||
include(config/findDependencies.cmake)
|
||||
include(config/compilerFlags.cmake)
|
||||
include( config/generateConfigFile.cmake )
|
||||
include_directories(${CMAKE_BINARY_DIR}) # Make the exv_conf.h file visible for the full project
|
||||
|
||||
include( config/CMakeChecks.txt )
|
||||
|
||||
if( MSVC )
|
||||
set(CMAKE_DEBUG_POSTFIX "d")
|
||||
endif()
|
||||
|
||||
if( EXIV2_ENABLE_XMP )
|
||||
add_subdirectory( xmpsdk )
|
||||
endif()
|
||||
add_subdirectory( src )
|
||||
|
||||
if( EXIV2_ENABLE_BUILD_SAMPLES )
|
||||
if( EXIV2_BUILD_SAMPLES )
|
||||
add_subdirectory( samples )
|
||||
endif()
|
||||
|
||||
if( EXIV2_ENABLE_BUILD_PO )
|
||||
if( EXIV2_BUILD_PO )
|
||||
add_subdirectory( po )
|
||||
endif()
|
||||
|
||||
##
|
||||
# tests
|
||||
add_custom_target(tests COMMAND env EXIV2_BINDIR="${CMAKE_BINARY_DIR}"/bin make tests WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" )
|
||||
add_custom_target(geotag-test COMMAND env EXIV2_BINDIR="${CMAKE_BINARY_DIR}"/bin make geotag-test WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" )
|
||||
|
||||
##
|
||||
# http://dev.exiv2.org/boards/3/topics/1364
|
||||
@ -106,3 +99,6 @@ if( MINGW OR UNIX OR APPLE)
|
||||
endif()
|
||||
|
||||
include( config/printSummary.cmake )
|
||||
|
||||
# That's all Folks!
|
||||
##
|
||||
|
||||
@ -23,7 +23,7 @@ if(MSVC)
|
||||
CMAKE_CXX_FLAGS_RELEASE
|
||||
CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
||||
)
|
||||
if ( ${BUILD_SHARED_LIBS} OR ${EXIV2_ENABLE_DYNAMIC_RUNTIME})
|
||||
if ( ${BUILD_SHARED_LIBS} OR ${EXIV2_ENABLE_DYNAMIC_RUNTIME} )
|
||||
message(STATUS "MSVC -> forcing use of dynamically-linked runtime." )
|
||||
foreach(variable ${variables})
|
||||
if(${variable} MATCHES "/MT")
|
||||
|
||||
@ -1,47 +1,36 @@
|
||||
// File generated by cmake from config/config.h.cmake.
|
||||
|
||||
#pragma once
|
||||
#ifndef _EXV_CONF_H_
|
||||
#define _EXV_CONF_H_
|
||||
|
||||
// Defined to 1 if when using `libssh' for SshIO.
|
||||
#cmakedefine01 EXV_USE_SSH
|
||||
// Defined if you want to use libssh for SshIO.
|
||||
#cmakedefine EXV_USE_SSH
|
||||
|
||||
// Define to 1 if you want to use `libcurl' in httpIO.
|
||||
#cmakedefine01 EXV_USE_CURL
|
||||
// Define to 1 if you want to use libcurl in httpIO.
|
||||
#cmakedefine EXV_USE_CURL
|
||||
|
||||
// Define if you require webready support.
|
||||
#cmakedefine EXV_ENABLE_WEBREADY
|
||||
|
||||
// Define to 1 if you have the `gmtime_r' function.
|
||||
// Define if you have the `gmtime_r' function.
|
||||
#cmakedefine EXV_HAVE_GMTIME_R
|
||||
|
||||
// Define to 1 if you have the <libintl.h> header file.
|
||||
// Define if you have the <libintl.h> header file.
|
||||
#cmakedefine EXV_HAVE_LIBINTL_H
|
||||
|
||||
// Define to 1 if translation of program messages to the user's native language is requested.
|
||||
// Define if you want translation of program messages to the user's native language
|
||||
#cmakedefine EXV_ENABLE_NLS
|
||||
|
||||
// Define to 1 if you require video support.
|
||||
// Define if you want video support.
|
||||
#cmakedefine EXV_ENABLE_VIDEO
|
||||
|
||||
// Define if you have correct declaration of strerror_r().
|
||||
#cmakedefine EXV_HAVE_DECL_STRERROR_R
|
||||
|
||||
#ifndef EXV_COMMERCIAL_VERSION
|
||||
|
||||
// Definition to enable translation of Nikon lens names.
|
||||
#cmakedefine EXV_HAVE_LENSDATA
|
||||
|
||||
// Define to 1 if you have the `iconv' function.
|
||||
#cmakedefine EXV_HAVE_ICONV
|
||||
|
||||
// Definition to enable conversion of UCS2 encoded Windows tags to UTF-8.
|
||||
#cmakedefine EXV_HAVE_PRINTUCS2
|
||||
|
||||
#endif /* !EXV_COMMERCIAL_VERSION */
|
||||
|
||||
// Definition to enable the Windows unicode path support.
|
||||
// Define to enable the Windows unicode path support.
|
||||
#cmakedefine EXV_UNICODE_PATH
|
||||
|
||||
|
||||
/* Define to `const' or to empty, depending on the second argument of `iconv'. */
|
||||
#cmakedefine ICONV_ACCEPTS_CONST_INPUT
|
||||
#if defined ICONV_ACCEPTS_CONST_INPUT
|
||||
@ -50,19 +39,22 @@
|
||||
#define EXV_ICONV_CONST
|
||||
#endif
|
||||
|
||||
// Definition to indicate if you have the <regex.h> header file.
|
||||
// Define if you have the <regex> header file.
|
||||
#cmakedefine EXV_HAVE_REGEX
|
||||
|
||||
// Definition to indicate you have the <memory.h> header file.
|
||||
// Define if you have the <regex.h> header file.
|
||||
#cmakedefine EXV_HAVE_REGEX_H
|
||||
|
||||
// Define if have the <memory.h> header file.
|
||||
#cmakedefine EXV_HAVE_MEMORY_H
|
||||
|
||||
// Definition to indicate if you have the `memset' function.
|
||||
// Define if you have the memset function.
|
||||
#cmakedefine EXV_HAVE_MEMSET
|
||||
|
||||
// Definition to indicate if stdbool.h conforms to C99.
|
||||
// Define if stdbool.h conforms to C99.
|
||||
#cmakedefine EXV_HAVE_STDBOOL_H
|
||||
|
||||
// Definition to indicate if you have the <stdint.h> header file.
|
||||
// Define if you have the <stdint.h> header file.
|
||||
#cmakedefine EXV_HAVE_STDINT_H
|
||||
|
||||
#ifndef EXV_HAVE_STDINT_H
|
||||
@ -71,53 +63,53 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Definition to indicate if you have the <stdlib.h> header file.
|
||||
// Define if you have the <stdlib.h> header file.
|
||||
#cmakedefine EXV_HAVE_STDLIB_H
|
||||
|
||||
// Definition to indicate if you have the `strchr' function.
|
||||
// Define if you have the strchr function.
|
||||
#cmakedefine EXV_HAVE_STRCHR
|
||||
|
||||
// Definition to indicate if you have the `strerror' function.
|
||||
// Define if you have the strerror function.
|
||||
#cmakedefine EXV_HAVE_STRERROR
|
||||
|
||||
// Definition to indicate if you have the `strerror_r' function.
|
||||
// Define if you have the strerror_r function.
|
||||
#cmakedefine EXV_HAVE_STRERROR_R
|
||||
|
||||
// Definition to indicate if strerror_r returns char *.
|
||||
// Define if strerror_r returns char *.
|
||||
#cmakedefine STRERROR_R_CHAR_P
|
||||
|
||||
// Definition to indicate if you have the <strings.h> header file.
|
||||
// Define if you have the <strings.h> header file.
|
||||
#cmakedefine EXV_HAVE_STRINGS_H
|
||||
|
||||
// Definition to indicate if you have the `strtol' function.
|
||||
// Define if you have the strtol function.
|
||||
#cmakedefine EXV_HAVE_STRTOL
|
||||
|
||||
// Definition to indicate if you have the `mmap' function.
|
||||
// Define if you have the mmap function.
|
||||
#cmakedefine EXV_HAVE_MMAP
|
||||
|
||||
// Definition to indicate if you have the `munmap' function.
|
||||
// Define if you have the munmap function.
|
||||
#cmakedefine EXV_HAVE_MUNMAP
|
||||
|
||||
// Definition to indicate if you have the <sys/stat.h> header file.
|
||||
// Define if you have <sys/stat.h> header file.
|
||||
#cmakedefine EXV_HAVE_SYS_STAT_H
|
||||
|
||||
// Definition to indicate if you have the <sys/types.h> header file.
|
||||
// Define if you have the <sys/types.h> header file.
|
||||
#cmakedefine EXV_HAVE_SYS_TYPES_H
|
||||
|
||||
// Definition to indicate if you have the `timegm' function.
|
||||
// Define if you have the timegm function.
|
||||
#cmakedefine EXV_HAVE_TIMEGM
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
/* Define if you have the <unistd.h> header file. */
|
||||
#cmakedefine EXV_HAVE_UNISTD_H 1
|
||||
|
||||
#if !defined( EXV_HAVE_UNISTD_H) && defined(__CYGWIN__)
|
||||
#define EXV_HAVE_UNISTD_H 1
|
||||
#endif
|
||||
|
||||
// Definition to indicate if you have the <sys/mman.h> header file.
|
||||
// Define if you have the <sys/mman.h> header file.
|
||||
#cmakedefine EXV_HAVE_SYS_MMAN_H
|
||||
|
||||
// Definition to indicate if the `zlib' library will be used
|
||||
// Define if you have are using the zlib library.
|
||||
#cmakedefine EXV_HAVE_LIBZ
|
||||
|
||||
#if defined(_MSC_VER) && HAVE_LIBZ
|
||||
@ -126,11 +118,11 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Definition to indicate if you have the <process.h> header file.
|
||||
// Define if you have the <process.h> header file.
|
||||
#cmakedefine EXV_HAVE_PROCESS_H
|
||||
|
||||
/* Define to 1 if you have the Adobe XMP Toolkit. */
|
||||
#cmakedefine EXV_HAVE_XMP_TOOLKIT 1
|
||||
/* Define if you have (Exiv2/xmpsdk) Adobe XMP Toolkit. */
|
||||
#cmakedefine EXV_HAVE_XMP_TOOLKIT
|
||||
|
||||
/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
|
||||
slash. */
|
||||
@ -165,3 +157,22 @@
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||
#cmakedefine size_t
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// The following features are not available for Commercial use
|
||||
#ifndef EXV_COMMERCIAL_VERSION
|
||||
|
||||
// Definition to enable translation of Nikon lens names.
|
||||
#cmakedefine EXV_HAVE_LENSDATA
|
||||
|
||||
// Define if you have the iconv function.
|
||||
#cmakedefine EXV_HAVE_ICONV
|
||||
|
||||
// Definition to enable conversion of UCS2 encoded Windows tags to UTF-8.
|
||||
#cmakedefine EXV_HAVE_PRINTUCS2
|
||||
|
||||
#endif /* !EXV_COMMERCIAL_VERSION */
|
||||
// ------------------------------------------------------------------
|
||||
#endif /* !_EXV_CONF_H_ */
|
||||
// That's All Folks!
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
@ -47,8 +47,11 @@
|
||||
/* Define to 1 if you have the <libintl.h> header file. */
|
||||
#undef HAVE_LIBINTL_H
|
||||
|
||||
/* Define to 1 if you have the <regex> header file. */
|
||||
#undef HAVE_REGEX
|
||||
|
||||
/* Define to 1 if you have the <regex.h> header file. */
|
||||
#define HAVE_REGEX 1
|
||||
#undef HAVE_REGEX_H
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
@ -56,7 +56,7 @@ AM_ICONV
|
||||
# Checks for header files.
|
||||
# ---------------------------------------------------------------------------
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS([libintl.h locale.h malloc.h stdint.h stdlib.h string.h unistd.h sys/mman.h utime.h regex.h])
|
||||
AC_CHECK_HEADERS([libintl.h locale.h malloc.h stdint.h stdlib.h string.h unistd.h sys/mman.h utime.h regex.h regex])
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
@ -401,7 +401,7 @@ if test "$ADOBE" = "2016" -o "$ADOBE" = "2014" -o "$ADOBE" = "2013" ; then
|
||||
if test "$ADOBE" == "2013" ; then ADOBE_SDK=XMP-Toolkit-SDK-CC201306; fi
|
||||
ENABLE_XMP=$ADOBE
|
||||
XMPSDK_CPPFLAGS="-Ixmpsdk/Adobe/$ADOBE_SDK/public/include"
|
||||
XMPSDK_LDFLAGS="-Lxmpsdk/Adobe/$ADOBE_SDK"
|
||||
XMPSDK_LDFLAGS="-Lxmpsdk/Adobe/$ADOBE_SDK -lXMPCore"
|
||||
case "$host_os" in
|
||||
*arwin*)
|
||||
EXV_DARWIN_FLAGS="-stdlib=libstdc++ -Wno-deprecated"
|
||||
|
||||
@ -43,7 +43,8 @@ check_include_file( "strings.h" EXV_HAVE_STRINGS_H )
|
||||
check_include_file( "sys/mman.h" EXV_HAVE_SYS_MMAN_H )
|
||||
check_include_file( "sys/stat.h" EXV_HAVE_SYS_STAT_H )
|
||||
check_include_file( "sys/types.h" EXV_HAVE_SYS_TYPES_H )
|
||||
check_include_file( "regex.h" EXV_HAVE_REGEX )
|
||||
check_include_file( "regex" EXV_HAVE_REGEX )
|
||||
check_include_file( "regex.h" EXV_HAVE_REGEX_H )
|
||||
check_include_file( "inttypes.h" EXV_HAVE_INTTYPES_H )
|
||||
|
||||
if (NOT EXV_HAVE_LIBINTL_H)
|
||||
@ -66,4 +67,4 @@ return 0;
|
||||
|
||||
#####################################################################################
|
||||
|
||||
configure_file( config/config.h.cmake ${CMAKE_BINARY_DIR}/exv_conf.h @ONLY)
|
||||
configure_file( config/config.h.cmake ${CMAKE_SOURCE_DIR}/include/exiv2/exv_conf.h @ONLY)
|
||||
|
||||
@ -19,19 +19,16 @@ message( STATUS "Compiler info: ${CMAKE_CXX_COMPILER_ID} (${CMAKE_CXX_COMPILER})
|
||||
|
||||
message( STATUS "------------------------------------------------------------------" )
|
||||
message( STATUS "${PACKAGE_STRING} configure results <${PACKAGE_URL}>" )
|
||||
OptionOutput( "Building PNG support: " EXIV2_ENABLE_PNG AND ZLIB_FOUND )
|
||||
OptionOutput( "Building shared library: " BUILD_SHARED_LIBS )
|
||||
OptionOutput( "Building PNG support: " EXIV2_ENABLE_PNG AND ZLIB_FOUND )
|
||||
OptionOutput( "XMP metadata support: " EXIV2_ENABLE_XMP )
|
||||
OptionOutput( "Building static libxmp: " EXIV2_ENABLE_LIBXMP )
|
||||
OptionOutput( "Native language support: " EXIV2_ENABLE_NLS )
|
||||
OptionOutput( "Conversion of Windows XP tags: " EXIV2_ENABLE_PRINTUCS2 )
|
||||
OptionOutput( "Nikon lens database: " EXIV2_ENABLE_LENSDATA )
|
||||
OptionOutput( "Commercial build: " EXIV2_ENABLE_COMMERCIAL )
|
||||
OptionOutput( "Build the unit tests: " EXIV2_ENABLE_BUILD_SAMPLES )
|
||||
OptionOutput( "Building translations files: " EXIV2_ENABLE_BUILD_PO )
|
||||
OptionOutput( "Building video support: " EXIV2_ENABLE_VIDEO )
|
||||
OptionOutput( "Building webready support: " EXIV2_ENABLE_WEBREADY )
|
||||
|
||||
if ( EXIV2_ENABLE_WEBREADY )
|
||||
OptionOutput( "USE Libcurl for HttpIo: " EXIV2_ENABLE_CURL )
|
||||
OptionOutput( "USE Libssh for SshIo: " EXIV2_ENABLE_SSH )
|
||||
@ -41,5 +38,9 @@ if (WIN32)
|
||||
OptionOutput( "Dynamic runtime override: " EXIV2_ENABLE_DYNAMIC_RUNTIME)
|
||||
OptionOutput( "Unicode paths (wstring): " EXIV2_ENABLE_WIN_UNICODE )
|
||||
endif()
|
||||
OptionOutput( "Building exiv2 command: " EXIV2_BUILD_EXIV2_COMMAND )
|
||||
OptionOutput( "Building samples: " EXIV2_BUILD_SAMPLES )
|
||||
OptionOutput( "Building PO files: " EXIV2_BUILD_PO )
|
||||
|
||||
|
||||
message( STATUS "------------------------------------------------------------------" )
|
||||
|
||||
@ -111,7 +111,7 @@ case $PLATFORM in
|
||||
|
||||
msvc)
|
||||
cd /tmp/jenkins/dist
|
||||
for vs in 2005 2008 2010 2012 2013 2015; do
|
||||
for vs in 2005 2008 2010 2012 2013 2015 2017; do
|
||||
for arch in x64 Win32; do
|
||||
if [ -e "$PWD/$vs/$arch/dll/Release/bin/exiv2.exe" ] ; then (
|
||||
# test the delivered exiv2
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
@@@Marco@@@@@b ;mm /##Gilles###\
|
||||
@@@Luis@@@@@b ;mm /##Gilles###\
|
||||
j@@@#Robin", Brad /@@@Thomas@@@@Q
|
||||
@@@# \ ## @@@b |@@@b
|
||||
@@@# .;;;;, ,;;;, ,;;;; ,;;;p .;;; 7@@ ]Alan
|
||||
@ -9,7 +9,7 @@
|
||||
@@@# ,@@##@@m @@@b @@@p @@C #@@#C
|
||||
@@@# ,/ s@@# @@@@ @@@b Volker @Tuan@
|
||||
]@@@Abhinav@@\ /@@@\ \@@@Q @@@Q %@@@# /@@@@Mahesh@@#
|
||||
/@@Raphael@@@@@\ /@@@@@\ C++ Metadata Library /@Sridhar@@@v0.26\
|
||||
/@@Raphael@@@@@\ /@@@@@\ C++ Metadata Library /@Sridhar@@@v0.26.1\
|
||||
|
||||
exiv2/contrib/cmake/msvc/ReadMe.txt
|
||||
-----------------------------------
|
||||
@ -17,201 +17,261 @@ exiv2/contrib/cmake/msvc/ReadMe.txt
|
||||
How to use this
|
||||
---------------
|
||||
|
||||
1 Setting up your machine
|
||||
You need cmake.exe, svn.exe and 7z.exe on your PATH.
|
||||
1 Setting up your machine
|
||||
You need cmake.exe, svn.exe and 7z.exe on your PATH.
|
||||
|
||||
Please get "Windows" versions of cmake/svn/7z (NOT Cygwin or MinGW versions)
|
||||
Please get "Windows" versions of cmake/svn/7z (NOT Cygwin or MinGW versions)
|
||||
|
||||
You should initialize the Visual Studio environment
|
||||
using the version of vcvars32.bat or vcvarsall.bat
|
||||
installed with Visual Studio. For example:
|
||||
cd <exiv2dir>/contrib/cmake/msvc
|
||||
...\cmake\msvc> cmd /c "vcvars 2015 64 & cmakeBuild.cmd --build"
|
||||
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
|
||||
cmakeBuild.cmd creates Visual Studio solution/project files
|
||||
Option: --build says "build using the generated files"
|
||||
|
||||
The batch file contrib\cmake\msvc\vcvars.bat is designed to take the pain
|
||||
out of this - provided Visual Studio is installed in %ProgramFiles(x86)%
|
||||
%ProgramFiles(x86)% is usually c:\Program Files (x86)
|
||||
More options: --static --test --debug --webready etc... (see below)
|
||||
|
||||
vcvars 2005 # sets 2005 x86
|
||||
vcvars 2010 64 # sets 2010 x86_amd64
|
||||
2 Selecting the version of Visual Studio
|
||||
|
||||
2 Always build "out of source". I recommend:
|
||||
cd <exiv2dir>\contrib\cmake\cmake
|
||||
cmd.exe
|
||||
vcvars 2015 64
|
||||
cmakeBuild --help # display syntax and options
|
||||
cmakeBuild --rebuild
|
||||
....
|
||||
exit
|
||||
You should initialize the Visual Studio environment
|
||||
using the version of vcvars32.bat or vcvarsall.bat
|
||||
installed with Visual Studio. For example:
|
||||
|
||||
+-------------------------------------------------------+
|
||||
| Never attempt to build in a directory with a space in |
|
||||
| the path name. Example c:\My Build Tree\exiv2\build |
|
||||
+-------------------------------------------------------+
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
|
||||
|
||||
You should never have reason to modify the code in cmakeBuild.cmd
|
||||
You may wish to change the defaults in cmakeDefaults.cmd
|
||||
You can change the defaults on the command-line (or modify cmakeDefaults.cmd)
|
||||
You can also change defaults using the dos set command. For example:
|
||||
set _CONFIG_=Debug
|
||||
The batch file contrib\cmake\msvc\vcvars.bat is designed to take the pain
|
||||
out of this - provided Visual Studio is installed in %ProgramFiles(x86)%
|
||||
%ProgramFiles(x86)% is usually c:\Program Files (x86)
|
||||
|
||||
To unset an environment string, set _CONFIG_=
|
||||
vcvars 2005 32 # sets 2005 x86
|
||||
vcvars 2010 64 # sets 2010 amd64
|
||||
|
||||
For your first build, I recommend the command:
|
||||
cmakeBuild --pause --verbose
|
||||
3 Always build "out of source". I recommend:
|
||||
cd <exiv2dir>\contrib\cmake\cmake
|
||||
cmd.exe
|
||||
vcvars 2015 64
|
||||
cmakeBuild --help # display syntax and options
|
||||
cmakeBuild --build
|
||||
....
|
||||
exit
|
||||
|
||||
This will print out a lot of information, and pause after each build step.
|
||||
+-------------------------------------------------------+
|
||||
| Never attempt to build in a directory with a space in |
|
||||
| the path name. Example c:\My Build Tree\exiv2\build |
|
||||
+-------------------------------------------------------+
|
||||
|
||||
When you are building happily, you may prefer:
|
||||
cmakeBuild --silent
|
||||
You should never have reason to modify the code in cmakeBuild.cmd
|
||||
You may wish to change the defaults in cmakeDefaults.cmd
|
||||
You can change the defaults on the command-line (or modify cmakeDefaults.cmd)
|
||||
You can also change defaults using the dos set command. For example:
|
||||
set _CONFIG_=Debug
|
||||
|
||||
3 What gets built?
|
||||
The build is performed in work
|
||||
The output is generated in dist
|
||||
dist\..mumble..\bin contains *.exe and *.dll files
|
||||
dist\..mumble..\lib contains *.lib files
|
||||
dist\..mumble..\include contains *.h and *.hpp files
|
||||
To unset an environment string, set _CONFIG_=
|
||||
|
||||
mumble identifies the compiler and build.
|
||||
Example C:\gnu\github\exiv2\contrib\cmake\msvc\dist\2013\x64\dll\Release\bin
|
||||
2013 = Visual Studio Choices: 2005/2008/2010/2012/2013/2015
|
||||
x64 = 64 bit build Win32/x64
|
||||
dll = shared library dll/static
|
||||
Release = configuration Release/Debug/RelWithDebInfo/MinSizeRel
|
||||
For your first build, I recommend the command:
|
||||
cmakeBuild --pause --verbose
|
||||
|
||||
4 Building manually with CMake
|
||||
The cmake option -G Generator should be chosen for the version of Visual Studio installed.
|
||||
cmake --help for more information
|
||||
This will print out a lot of information, and pause after each build step.
|
||||
|
||||
I personally always build/test with Visual Studio 2005 in 64 bits.
|
||||
The generator is: "Visual Studio 8 2005 Win64"
|
||||
When you are building happily, you may prefer:
|
||||
cmakeBuild --silent
|
||||
|
||||
cd <exiv2dir>
|
||||
mkdir ../build
|
||||
cd ../build
|
||||
4 Options
|
||||
C:\Users\rmills\gnu\github\clanmills\exiv2\contrib\cmake\msvc>cmakeBuild --help
|
||||
Options: --help | --silent | --verbose | --pause | --dryrun | --trace | --test
|
||||
--build | --static | --unicode | --nls | --webready | --video | --samples
|
||||
--exiv2 C:\Users\rmills\gnu\github\clanmills\exiv2 | --work work | --config Release | --generator generator
|
||||
--zlib zlib-1.2.8 | --expat expat-2.1.0 | --curl curl-7.45.0 | --libssh libssh-0.7.2
|
||||
--bash c:\cygwin64\bin\bash.exe
|
||||
|
||||
rem download support libraries
|
||||
svn export svn://dev.exiv2.org/svn/team/libraries/zlib-1.2.8.tar.gz
|
||||
svn export svn://dev.exiv2.org/svn/team/libraries/expat-2.1.0.tar.gz
|
||||
Option switches.
|
||||
--help Print help message and quit
|
||||
--silent Run script with minimal "chatter"
|
||||
--verbose Run script with maximum "chatter"
|
||||
--pause Pause at every build step
|
||||
--dryrun Don't build anything. Report and quit
|
||||
--trace Show commands begin executed by the script (implies --build --samples)
|
||||
--test Execute the test suite after the build
|
||||
|
||||
...
|
||||
--build Build the code
|
||||
--static Build and link static libraries and programs
|
||||
--dll Build DLLs (not static libraries)
|
||||
--unicode Build UNICODE path support
|
||||
--ascii Do not build UNICODE path support
|
||||
--nls Build with Natural Language Support
|
||||
--webready Build and Link the webready feature
|
||||
--video Build and link video support
|
||||
--samples Include samples in projects
|
||||
--debug Build debug (shorthand for --config Debug)
|
||||
--release Build release (shorthand for --config Release)
|
||||
|
||||
Option/values (See section 10 below)
|
||||
--zlib zlib-1.2.8
|
||||
--expath expat-2.1.0
|
||||
--curl curl-7.44.0
|
||||
--libssh libssh-0.7.2
|
||||
|
||||
Other build key/value pairs:
|
||||
--config Release | Debug
|
||||
--generator The script default is almost always correct and is passed as -G "Generator" to CMake
|
||||
--work The "work" directory in which the build will be performed (see 4 below)
|
||||
--bash Path to bash.exe to be used when --test is specified.
|
||||
|
||||
5 What gets built?
|
||||
The build is performed in work_Config (for example work_Release)
|
||||
The output is generated in dist
|
||||
dist\..mumble..\bin contains *.exe and *.dll files
|
||||
dist\..mumble..\lib contains *.lib files
|
||||
dist\..mumble..\include contains *.h and *.hpp files
|
||||
|
||||
mumble identifies the compiler and build.
|
||||
Example C:\gnu\github\exiv2\contrib\cmake\msvc\dist\2013\x64\dll\Release\bin
|
||||
2013 = Visual Studio Choices: 2005 | 2008 | 2010 | 2012 | 2013 | 2015 | 2017
|
||||
x64 = 64 bit build Win32 | x64
|
||||
dll = shared library dll | static
|
||||
Release = configuration Release | Debug | RelWithDebInfo | MinSizeRel
|
||||
|
||||
6 Building manually with CMake
|
||||
The cmake option -G Generator should be chosen for the version of Visual Studio installed.
|
||||
cmake --help for more information
|
||||
|
||||
I personally always build/test with Visual Studio 2005 in 64 bits.
|
||||
The generator is: "Visual Studio 8 2005 Win64"
|
||||
|
||||
cd <exiv2dir>
|
||||
mkdir ../build
|
||||
cd ../build
|
||||
|
||||
rem download support libraries
|
||||
svn export svn://dev.exiv2.org/svn/team/libraries/zlib-1.2.8.tar.gz
|
||||
svn export svn://dev.exiv2.org/svn/team/libraries/expat-2.1.0.tar.gz
|
||||
|
||||
...
|
||||
for webready
|
||||
you need curl-7.45.0 libssh-0.7.2 and openssl-1.0.1p
|
||||
See below: "About webready support libraries (openssl, libssh and curl)
|
||||
...
|
||||
...
|
||||
|
||||
rem create a temp directory and a dist (distribution) directory
|
||||
mkdir temp # build, compile and link in this directory
|
||||
mkdir dist # the output artifacts are stored here
|
||||
rem create a temp directory and a dist (distribution) directory
|
||||
mkdir temp # build, compile and link in this directory
|
||||
mkdir dist # the output artifacts are stored here
|
||||
|
||||
rem build zlib-1.2.8
|
||||
mkdir temp\zlib-1.2.8
|
||||
cd temp\zlib-1.2.8
|
||||
cmake -G "Visual Studio 8 2005 Win64" "-DCMAKE_INSTALL_PREFIX=..\..dist" ..\..\zlib-1.2.8
|
||||
cmake --build . # TAKE CARE with expat-2.1.0 use: cmake --build . --target expat
|
||||
cmake --build . --target install
|
||||
cd ..\..
|
||||
rem build zlib-1.2.8
|
||||
mkdir temp\zlib-1.2.8
|
||||
cd temp\zlib-1.2.8
|
||||
cmake -G "Visual Studio 8 2005 Win64" "-DCMAKE_INSTALL_PREFIX=..\..dist" ..\..\zlib-1.2.8
|
||||
cmake --build . # TAKE CARE with expat-2.1.0 use: cmake --build . --target expat
|
||||
cmake --build . --target install
|
||||
cd ..\..
|
||||
|
||||
rem build expat-2.1.0 and other required libraries
|
||||
rem build expat-2.1.0 and other required libraries
|
||||
|
||||
rem build exiv2
|
||||
mkdir temp\exiv2
|
||||
cd temp\exiv2
|
||||
cmake -G "Visual Studio 8 2005 Win64" "-DCMAKE_INSTALL_PREFIX=..\..\dist" ^
|
||||
"-DCMAKE_LIBRARY_PATH=..\..\dist\lib" "-DCMAKE_INCLUDE_PATH=..\..\dist\include" ^
|
||||
-DBUILD_SHARED_LIBS=ON ^
|
||||
..\..\..\<exiv2dir>
|
||||
cmake --build . --config Release
|
||||
cmake --build . --config Release --target install
|
||||
rem build exiv2
|
||||
mkdir temp\exiv2
|
||||
cd temp\exiv2
|
||||
cmake -G "Visual Studio 8 2005 Win64" "-DCMAKE_INSTALL_PREFIX=..\..\dist" ^
|
||||
"-DCMAKE_LIBRARY_PATH=..\..\dist\lib" "-DCMAKE_INCLUDE_PATH=..\..\dist\include" ^
|
||||
-DBUILD_SHARED_LIBS=ON ^
|
||||
..\..\..\<exiv2dir>
|
||||
cmake --build . --config Release
|
||||
cmake --build . --config Release --target install
|
||||
|
||||
5 About webready support libraries (openssl, libssh and curl)
|
||||
7 About webready support libraries (openssl, libssh and curl)
|
||||
|
||||
+-----------------------------------------------+
|
||||
| cmakeBuild.cmd always builds shared (--dll) |
|
||||
| when you use --webready |
|
||||
| You can build static versions of exiv2 and |
|
||||
| supporting libraries with the msvc/ solution |
|
||||
+-----------------------------------------------+
|
||||
|
||||
a) openssl
|
||||
You cannot build openssl with CMake. However we have prebuilt binaries which
|
||||
you can download and extract into your build tree.
|
||||
a) openssl
|
||||
You cannot build openssl with CMake. However we have prebuilt binaries which
|
||||
you can download and extract into your build tree.
|
||||
|
||||
You will have to match the version to your compiler.
|
||||
In this example: vs2015/64 bit
|
||||
You will have to match the version to your compiler.
|
||||
In this example: vs2015/64 bit
|
||||
|
||||
svn export svn://dev.exiv2.org/svn/team/libraries/openssl-1.0.1p-vs2015.7z
|
||||
7z x openssl-1.0.1p-vs2015.7z
|
||||
xcopy/yesihq openssl-1.0.1p-vs2015\bin64 dist\bin"
|
||||
xcopy/yesihq openssl-1.0.1p-vs2015\lib64 dist\bin"
|
||||
xcopy/yesihq openssl-1.0.1p-vs2015\include64 dist\include"
|
||||
svn export svn://dev.exiv2.org/svn/team/libraries/openssl-1.0.1p-vs2015.7z
|
||||
7z x openssl-1.0.1p-vs2015.7z
|
||||
xcopy/yesihq openssl-1.0.1p-vs2015\bin64 dist\bin"
|
||||
xcopy/yesihq openssl-1.0.1p-vs2015\lib64 dist\bin"
|
||||
xcopy/yesihq openssl-1.0.1p-vs2015\include64 dist\include"
|
||||
|
||||
In this example: vs2008/32 bit
|
||||
svn export svn://dev.exiv2.org/svn/team/libraries/openssl-1.0.1p-vs2008.7z
|
||||
7z x openssl-1.0.1p-vs2015.7z
|
||||
xcopy/yesihq openssl-1.0.1p-vs2008\bin dist\bin"
|
||||
xcopy/yesihq openssl-1.0.1p-vs2008\lib dist\bin"
|
||||
xcopy/yesihq openssl-1.0.1p-vs2008\include dist\include"
|
||||
In this example: vs2008/32 bit
|
||||
svn export svn://dev.exiv2.org/svn/team/libraries/openssl-1.0.1p-vs2008.7z
|
||||
7z x openssl-1.0.1p-vs2015.7z
|
||||
xcopy/yesihq openssl-1.0.1p-vs2008\bin dist\bin"
|
||||
xcopy/yesihq openssl-1.0.1p-vs2008\lib dist\bin"
|
||||
xcopy/yesihq openssl-1.0.1p-vs2008\include dist\include"
|
||||
|
||||
The script contrib/cmake/msvc/cmakeOpenssl was used to create the vs2005.7z file
|
||||
from a complete build performed by msvc/exiv2-webready.sln and openssl-1.0.1p source
|
||||
The script contrib/cmake/msvc/cmakeOpenssl was used to create the vs2005.7z file
|
||||
from a complete build performed by msvc/exiv2-webready.sln and openssl-1.0.1p source
|
||||
|
||||
b) curl
|
||||
curl does not seem to build with CMake.
|
||||
It announces itself "the curl cmake build system is poorly maintained. Be aware"
|
||||
b) curl
|
||||
curl does not seem to build with CMake.
|
||||
It announces itself "the curl cmake build system is poorly maintained. Be aware"
|
||||
|
||||
I have given up trying to get this to work and used nmake in the winbuild directory.
|
||||
For more information, read: winbuild\BUILD.WINDOWS.txt
|
||||
I have given up trying to get this to work and used nmake in the winbuild directory.
|
||||
For more information, read: winbuild\BUILD.WINDOWS.txt
|
||||
|
||||
c) libssh
|
||||
Three changes have been made to libssh to build with VS2015, VS2008, VS2995
|
||||
These have been reported (with fixes)
|
||||
VS2015: https://red.libssh.org/issues/214
|
||||
VS2005/8: https://red.libssh.org/issues/2205
|
||||
c) libssh
|
||||
Three changes have been made to libssh to build with VS2015, VS2008, VS2995
|
||||
These have been reported (with fixes)
|
||||
VS2015: https://red.libssh.org/issues/214
|
||||
VS2005/8: https://red.libssh.org/issues/2205
|
||||
|
||||
The fixes are included in svn://dev.exiv2.org/svn/team/libraries/libssh-0.7.2.tar.gz
|
||||
A 'vanilla' version of libssh will may require those fixes to be applied.
|
||||
The fixes are included in svn://dev.exiv2.org/svn/team/libraries/libssh-0.7.2.tar.gz
|
||||
A 'vanilla' version of libssh will may require those fixes to be applied.
|
||||
|
||||
6 Build options
|
||||
You can inspect CMake options by running grep OPTION on CMakeLists.txt in <exiv2dir>
|
||||
C:\cygwin64\home\rmills\gnu\exiv2\build>cd ..\trunk
|
||||
8 Build options
|
||||
You can inspect CMake options by running 'grep option <exiv2dir>/CMakeLists.txt'
|
||||
|
||||
C:\cygwin64\home\rmills\gnu\github\clanmills\exiv2\contrib\cmake\msvc>cd ..\..\..
|
||||
C:\cygwin64\home\rmills\gnu\github\clanmills\exiv2>grep option CMakeLists.txt
|
||||
# options and their default values
|
||||
option( BUILD_SHARED_LIBS "Build exiv2 as a shared library (dll)" ON )
|
||||
option( EXIV2_ENABLE_XMP "Build with XMP metadata support" ON )
|
||||
option( EXIV2_ENABLE_LIBXMP "Build a static convenience Library for XMP" ON )
|
||||
option( EXIV2_ENABLE_PNG "Build with png support (requires libz)" ON )
|
||||
option( EXIV2_ENABLE_NLS "Build native language support (requires gettext)" ON )
|
||||
option( EXIV2_ENABLE_PRINTUCS2 "Build with Printucs2" ON )
|
||||
option( EXIV2_ENABLE_LENSDATA "Build including lens data" ON )
|
||||
option( EXIV2_ENABLE_COMMERCIAL "Build with the EXV_COMMERCIAL_VERSION symbol set" OFF )
|
||||
option( EXIV2_ENABLE_VIDEO "Build video support into library" OFF )
|
||||
option( EXIV2_ENABLE_WEBREADY "Build webready support into library" OFF )
|
||||
option( EXIV2_ENABLE_DYNAMIC_RUNTIME "Use dynamic runtime (used for static libs)" OFF )
|
||||
option( EXIV2_ENABLE_WIN_UNICODE "Use Unicode paths (wstring) on Windows" OFF )
|
||||
option( EXIV2_ENABLE_CURL "USE Libcurl for HttpIo" OFF )
|
||||
option( EXIV2_ENABLE_SSH "USE Libssh for SshIo" OFF )
|
||||
option( EXIV2_BUILD_SAMPLES "Build sample applications" ON )
|
||||
option( EXIV2_BUILD_PO "Build translations files" OFF )
|
||||
option( EXIV2_BUILD_EXIV2_COMMAND "Build exiv2 command-line executable" ON )
|
||||
|
||||
C:\cygwin64\home\rmills\gnu\exiv2\trunk>grep OPTION CMakeLists.txt
|
||||
OPTION( BUILD_SHARED_LIBS "Build exiv2 as a shared library (dll)" ON )
|
||||
OPTION( EXIV2_ENABLE_XMP "Build with XMP metadata support" ON )
|
||||
OPTION( EXIV2_ENABLE_LIBXMP "Build a static convenience Library for XMP" ON )
|
||||
OPTION( EXIV2_ENABLE_VIDEO "Build with video support" OFF )
|
||||
OPTION( EXIV2_ENABLE_PNG "Build with png support (requires libz)" ON )
|
||||
OPTION( EXIV2_ENABLE_NLS "Build native language support (requires gettext)" ON )
|
||||
OPTION( EXIV2_ENABLE_PRINTUCS2 "Build with Printucs2" ON )
|
||||
OPTION( EXIV2_ENABLE_LENSDATA "Build including lens data" ON )
|
||||
OPTION( EXIV2_ENABLE_COMMERCIAL "Build with the EXV_COMMERCIAL_VERSION symbol set" OFF )
|
||||
OPTION( EXIV2_ENABLE_BUILD_SAMPLES "Build the unit tests" ON )
|
||||
OPTION( EXIV2_ENABLE_BUILD_PO "Build translations files" OFF )
|
||||
OPTION( EXIV2_ENABLE_VIDEO "Build video support into library" OFF )
|
||||
OPTION( EXIV2_ENABLE_WEBREADY "Build webready support into library" OFF )
|
||||
OPTION( EXIV2_ENABLE_WIN_UNICODE "Use Unicode paths (wstring) on Windows" OFF )
|
||||
OPTION( EXIV2_ENABLE_CURL "USE Libcurl for HttpIo" OFF )
|
||||
OPTION( EXIV2_ENABLE_SSH "USE Libssh for SshIo" OFF )
|
||||
9 Running the test suite
|
||||
http://dev.exiv2.org/projects/exiv2/wiki/How_do_I_run_the_test_suite_for_Exiv2
|
||||
|
||||
C:\cygwin64\home\rmills\gnu\exiv2\trunk>
|
||||
You can run the test-suite directly from cmakeBuild.cmd with the argument --test
|
||||
You need cygwin's bash.exe to run the test suite.
|
||||
|
||||
7 Running the test suite
|
||||
http://dev.exiv2.org/projects/exiv2/wiki/How_do_I_run_the_test_suite_for_Exiv2
|
||||
10 Building with different versions of the support libraries
|
||||
You can change the standard libraries. For example, to build with curl-7.39.0
|
||||
1) set _CURL_=curl-7.39.0
|
||||
2) add curl-7.39.0.tar.gz in your build directory
|
||||
|
||||
You can run the test-suite directly from cmakeBuild.cmd with the argument --test
|
||||
You need cygwin's bash.exe to run the test suite.
|
||||
To change the version of openssl:
|
||||
1) set _OPENSSL_=openssl-1.0.1j
|
||||
2) add openssl-1.0.1j-vs2015.zip into your build directory
|
||||
|
||||
8 Building with different versions of the support libraries
|
||||
You can change the standard libraries. For example, to build with curl-7.39.0
|
||||
1) set _CURL_=curl-7.39.0
|
||||
2) add curl-7.39.0.tar.gz in your build directory
|
||||
11 Rebuilding with VS 2005/8/10/12/13/15/17 32/64
|
||||
The script cmakeBuildAll.cmd is provided for convenience:
|
||||
cmakeBuildAll.cmd --test > rebuildAll.txt
|
||||
To view progress, open another shell: tail -f rebuildAll.txt
|
||||
|
||||
To change the version of openssl:
|
||||
1) set _OPENSSL_=openssl-1.0.1j
|
||||
2) add openssl-1.0.1j-vs2015.zip into your build directory
|
||||
|
||||
9 Rebuilding with VS 2005/8/10/12/13/15 32/64
|
||||
The script cmakeBuildAll.cmd is provided for convenience:
|
||||
cmakeBuildAll.cmd --test > rebuildAll.txt
|
||||
To view progress, open another shell: tail -f rebuildAll.txt
|
||||
|
||||
cmakeBuildAll.cmd takes about a hour if you don't specify --webready
|
||||
12 build+test cycles of about 5 minutes each.
|
||||
With webready, 12 build+test cycles of 12 minutes = 2.5 hours
|
||||
cmakeBuildAll.cmd takes about a hour if you don't specify --webready
|
||||
14 build+test cycles of about 5 minutes each. Just over 1 hour.
|
||||
With webready, 14 build+test cycles of 12 minutes = 3 hours
|
||||
>>>>>>> robin/master
|
||||
|
||||
Robin Mills
|
||||
robin@clanmills.com
|
||||
Updated: 2017-09-13
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
int main(int,const char**)
|
||||
{
|
||||
const char* vs[] = { "unknown" , "2005", "2008", "2010", "2012", "2013", "2015" };
|
||||
const char* vs[] = { "unknown" , "2005", "2008", "2010", "2012", "2013", "2015","2017" };
|
||||
int v = (_MSC_VER-1300)/100;
|
||||
if ( v < 0 || v >= (sizeof(vs)/sizeof(vs[0])) ) v = 0;
|
||||
fprintf(stderr,"_%s = %d (%s) sizeof(void*) = %d\n","MSC_VER",_MSC_VER,vs[v],(int)sizeof(void*));
|
||||
|
||||
@ -1,41 +1,68 @@
|
||||
@echo off
|
||||
setlocal enableextensions
|
||||
|
||||
rem ----
|
||||
rem always run this script in <exiv2dir>/contrib/cmake/msvc
|
||||
cd %~dp0
|
||||
|
||||
set "_BUILDDIR_=%CD%"
|
||||
call:echo calling cmakeDefaults.cmd
|
||||
call cmakeDefaults.cmd
|
||||
IF ERRORLEVEL 1 (
|
||||
echo "*** cmakeDefaults.cmd has failed ***" >&2
|
||||
GOTO error_end
|
||||
)
|
||||
|
||||
:GETOPTS
|
||||
if /I "%1" == "--bash" set "_BASH_=%2"& shift
|
||||
if /I "%1" == "--config" set "_CONFIG_=%2"& shift
|
||||
if /I "%1" == "--curl" set "_CURL_=%2"& shift
|
||||
if /I "%1" == "--exiv2" set "_EXIV2_=%2"& shift
|
||||
if /I "%1" == "--expat" set "_EXPAT_=%2"& shift
|
||||
if /I "%1" == "--generator" set "_GENERATOR_=%2"& shift
|
||||
if /I "%1" == "--openssl" set "_OPENSSL_=%2"& shift
|
||||
if /I "%1" == "--libssh" set "_LIBSSH_=%2"& shift
|
||||
if /I "%1" == "--work" set "_WORK_=%2"& shift
|
||||
if /I "%1" == "--zlib" set "_ZLIB_=%2"& shift
|
||||
set _CLAIMED_=0
|
||||
if /I "%1" == "--bash" call:set "_BASH_=%2"& shift
|
||||
if /I "%1" == "--config" call:set "_CONFIG_=%2"& shift
|
||||
if /I "%1" == "--curl" call:set "_CURL_=%2"& shift
|
||||
if /I "%1" == "--exiv2" call:set "_EXIV2_=%2"& shift
|
||||
if /I "%1" == "--expat" call:set "_EXPAT_=%2"& shift
|
||||
if /I "%1" == "--generator" call:set "_GENERATOR_=%2"& shift
|
||||
if /I "%1" == "--openssl" call:set "_OPENSSL_=%2"& shift
|
||||
if /I "%1" == "--libssh" call:set "_LIBSSH_=%2"& shift
|
||||
if /I "%1" == "--work" call:set "_WORK_=%2"& shift
|
||||
if /I "%1" == "--zlib" call:set "_ZLIB_=%2"& shift
|
||||
|
||||
if /I "%1" == "--help" call:Help && goto end
|
||||
if /I "%1" == "--dryrun" set "_DRYRUN_=1"
|
||||
if /I "%1" == "--nosamples" set "_NOSAMPLES_=1"
|
||||
if /I "%1" == "--pause" set "_PAUSE_=1"
|
||||
if /I "%1" == "--rebuild" set "_REBUILD_=1"
|
||||
if /I "%1" == "--silent" set "_SILENT_=1"
|
||||
if /I "%1" == "--static" set "_MODE_=static"
|
||||
if /I "%1" == "--test" set "_TEST_=1"
|
||||
if /I "%1" == "--trace" set ("_VERBOSE_=1 && echo on)"
|
||||
if /I "%1" == "--verbose" set "_VERBOSE_=1"
|
||||
if /I "%1" == "--video" set "_VIDEO_=1"
|
||||
if /I "%1" == "--webready" set "_WEBREADY_=1"
|
||||
if /I "%1" == "--dryrun" call:set "_DRYRUN_=1"
|
||||
if /I "%1" == "--build" call:set "_BUILD_=1"
|
||||
if /I "%1" == "--samples" call:set "_SAMPLES_=1"
|
||||
if /I "%1" == "--pause" call:set "_PAUSE_=1"
|
||||
if /I "%1" == "--silent" call:set "_SILENT_=1"
|
||||
if /I "%1" == "--static" call:set "_SHARED_=0"
|
||||
if /I "%1" == "--shared" call:set "_SHARED_=1"
|
||||
if /I "%1" == "--dll" call:set "_SHARED_=1"
|
||||
if /I "%1" == "--test" call:set "_TEST_=1"
|
||||
if /I "%1" == "--trace" call:set "_TRACE_=1"
|
||||
if /I "%1" == "--verbose" call:set "_VERBOSE_=1"
|
||||
if /I "%1" == "--video" call:set "_VIDEO_=1"
|
||||
if /I "%1" == "--webready" call:set "_WEBREADY_=1"
|
||||
if /I "%1" == "--unicode" call:set "_UNICODE_=1"
|
||||
if /I "%1" == "--ascii" call:set "_UNICODE_=0"
|
||||
if /I "%1" == "--nls" call:set "_NLS_=1"
|
||||
if /I "%1" == "--debug" call:set "_CONFIG_=Debug"
|
||||
if /I "%1" == "--release" call:set "_CONFIG_=Release"
|
||||
|
||||
if /I "%_CLAIMED_%" == "0" (
|
||||
echo "*** unknown command argument %1 ***" >&2
|
||||
goto error_end
|
||||
)
|
||||
|
||||
shift
|
||||
if not (%1) EQU () goto GETOPTS
|
||||
goto main
|
||||
|
||||
:set
|
||||
set %1
|
||||
set _CLAIMED_=1
|
||||
exit /b 0
|
||||
|
||||
:help
|
||||
call cmakeDefaults >NUL 2>NUL
|
||||
echo Options: --help ^| --webready ^| --rebuild ^| --video ^| --static
|
||||
echo. --silent ^| --verbose ^| --pause ^| --dryrun ^| --test ^| --trace
|
||||
echo Options: --help ^| --silent ^| --verbose ^| --pause ^| --dryrun ^| --trace ^| --test
|
||||
echo. --build ^| --static ^| --unicode ^| --nls ^| --webready ^| --video ^| --samples
|
||||
echo. --exiv2 %_EXIV2_% ^| --work %_WORK_% ^| --config %_CONFIG_% ^| --generator generator
|
||||
echo. --zlib %_ZLIB_% ^| --expat %_EXPAT_% ^| --curl %_CURL_% ^| --libssh %_LIBSSH_%
|
||||
echo. --bash %_BASH_%
|
||||
@ -46,23 +73,30 @@ echo.&&echo.&&echo.
|
||||
echo.------ cmakeBuild Settings ----------
|
||||
echo.bash = %_BASH_%
|
||||
echo.binpath = %_BINPATH_%
|
||||
echo.build = %_BUILD_%
|
||||
echo.builddir = %_BUILDDIR_%
|
||||
echo.config = %_CONFIG_%
|
||||
echo.curl = %_CURL_%
|
||||
echo.dryrun = %_DRYRUN_%
|
||||
echo.exiv2 = %_EXIV2_%
|
||||
echo.expat = %_EXPAT_%
|
||||
echo.generator = %_GENERATOR_%
|
||||
echo.install = %_INSTALL_%
|
||||
echo.incpath = %_INCPATH_%
|
||||
echo.libpath = %_LIBPATH_%
|
||||
echo.libssh = %_LIBSSH_%
|
||||
echo.mode = %_MODE_%
|
||||
echo.nls = %_NLS_%
|
||||
echo.openssl = %_OPENSSL_%
|
||||
echo.work = %_WORK_%
|
||||
echo.platform = %PLATFORM%
|
||||
echo.samples = %_SAMPLES_%
|
||||
echo.shared = %_SHARED_%
|
||||
echo.test = %_TEST_%
|
||||
echo.video = %_VIDEO_%
|
||||
echo.unicode = %_UNICODE_%
|
||||
echo.vc = %_VC_%
|
||||
echo.video = %_VIDEO_%
|
||||
echo.vs = %_VS_%
|
||||
echo.webready = %_WEBREADY_%
|
||||
echo.work = %_WORK_%
|
||||
echo.zlib = %_ZLIB_%
|
||||
echo.&&echo.&&echo.
|
||||
exit /b 0
|
||||
@ -72,12 +106,6 @@ if NOT DEFINED _SILENT_ set _VERBOSE_=1
|
||||
set _UNSUPPORTED_=
|
||||
|
||||
rem ----
|
||||
call:echo calling cmakeDefaults.cmd
|
||||
call cmakeDefaults
|
||||
IF ERRORLEVEL 1 (
|
||||
echo "*** cmakeDefaults.cmd has failed ***" >&2
|
||||
GOTO error_end
|
||||
)
|
||||
call:echo _EXIV2_ = %_EXIV2_%
|
||||
|
||||
rem ----
|
||||
@ -91,6 +119,7 @@ IF NOT EXIST "%VSINSTALLDIR%" (
|
||||
GOTO error_end
|
||||
)
|
||||
|
||||
if /I "%VSINSTALLDIR%" == "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\" set "_VS_=2017" && set "_VC_=15"
|
||||
if /I "%VSINSTALLDIR%" == "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\" set "_VS_=2015" && set "_VC_=14"
|
||||
if /I "%VSINSTALLDIR%" == "%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\" set "_VS_=2013" && set "_VC_=12"
|
||||
if /I "%VSINSTALLDIR%" == "%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\" set "_VS_=2012" && set "_VC_=11"
|
||||
@ -105,11 +134,17 @@ if NOT DEFINED _VS_ (
|
||||
)
|
||||
|
||||
call:echo testing architecture
|
||||
if "%PROCESSOR_ARCHITECTURE%" EQU "x86" (
|
||||
set _ARCH_=64
|
||||
if /I "%PROCESSOR_ARCHITECTURE%" == "x86" set _ARCH_=32
|
||||
if /I "%VSCMD_ARG_HOST_ARCH%" == "x86" set _ARCH_=32
|
||||
|
||||
if /I "%_ARCH_%" == "32" (
|
||||
set Platform=Win32
|
||||
set RawPlatform=x86
|
||||
set CpuPlatform=ia32
|
||||
) ELSE (
|
||||
)
|
||||
|
||||
if NOT DEFINED Platform (
|
||||
set Platform=x64
|
||||
set RawPlatform=x64
|
||||
set CpuPlatform=intel64
|
||||
@ -164,23 +199,38 @@ IF ERRORLEVEL 1 (
|
||||
GOTO error_end
|
||||
)
|
||||
|
||||
rem ----
|
||||
call:echo fixups
|
||||
set _WORK_=%_WORK_%_%_CONFIG_%
|
||||
if DEFINED _TRACE_ (
|
||||
set _VERBOSE_=1
|
||||
echo on
|
||||
)
|
||||
if DEFINED _TEST_ (
|
||||
set _SAMPLES_=1
|
||||
set _BUILD_=1
|
||||
)
|
||||
if DEFINED _WEBREADY_ set _SHARED_=1
|
||||
|
||||
if /I "%_SHARED_%" == "1" set _MODE_=dll
|
||||
if /I "%_SHARED_%" == "0" set _MODE_=static
|
||||
|
||||
rem ----
|
||||
call:echo testing work directory _WORK_ = %_WORK_%
|
||||
if defined _REBUILD_ if EXIST "%_WORK_%" rmdir/s/q "%_WORK_%"
|
||||
if defined _REBUILD_ del/s CMakeCache.txt >NUL 2>NUL
|
||||
if EXIST "%_WORK_%" rmdir/s/q "%_WORK_%"
|
||||
del/s CMakeCache.txt >NUL 2>NUL
|
||||
IF NOT EXIST "%_WORK_%" mkdir "%_WORK_%"
|
||||
pushd "%_WORK_%"
|
||||
set "_WORK_=%CD%"
|
||||
set "_WORK_=%CD%"
|
||||
popd
|
||||
call:echo _WORK_ = %_WORK_%
|
||||
call:echo _WORK_ = %_WORK_%
|
||||
|
||||
rem ----
|
||||
call:echo testing INSTALL
|
||||
SET _INSTALL_=dist\%_VS_%\%Platform%\%_MODE_%\%_CONFIG_%
|
||||
if NOT EXIST %_INSTALL_% mkdir %_INSTALL_%
|
||||
IF NOT EXIST %_INSTALL_% mkdir %_INSTALL_%
|
||||
pushd %_INSTALL_%
|
||||
set "_INSTALL_=%CD%"
|
||||
set "_INSTALL_=%CD%"
|
||||
popd
|
||||
call:echo _INSTALL_ = %_INSTALL_%
|
||||
|
||||
@ -200,7 +250,8 @@ if defined _TEST_ if NOT EXIST "%_BASH_%" (
|
||||
if NOT DEFINED _GENERATOR_ set "_GENERATOR_=%VS_CMAKE%"
|
||||
if /I "%_GENERATOR_%" == "NMake" set "_GENERATOR_=NMake Makefiles"
|
||||
|
||||
if /I "%_MODE_%" == "static" "_LINK_=-DCMAKE_LINK=static"
|
||||
rem Fixup for openssl/vs 2017
|
||||
if /I "%_OPENSSL_%" == "openssl-1.0.1p" if /I "%_VS_%" == 2017 set _OPENSSL_ = openssl-1.1.0f
|
||||
|
||||
call:cltest
|
||||
call:report
|
||||
@ -211,12 +262,18 @@ IF DEFINED _PAUSE_ pause
|
||||
echo ---------- ZLIB building with cmake ------------------
|
||||
call:buildLib %_ZLIB_% -DCMAKE_INSTALL_PREFIX=%_INSTALL_%
|
||||
|
||||
rem Fixup ZLIB. This should be possible inside CMake
|
||||
if /I "%_MODE_%" == "static" (
|
||||
if EXIST "%_WORK_%\%_ZLIB_%\%_CONFIG_%\zlibstaticd.lib" copy/y "%_WORK_%\%_ZLIB_%\%_CONFIG_%\zlibstaticd.lib" "%_LIBPATH_%\zlibd.lib"
|
||||
if EXIST "%_WORK_%\%_ZLIB_%\%_CONFIG_%\zlibstatic.lib" copy/y "%_WORK_%\%_ZLIB_%\%_CONFIG_%\zlibstatic.lib" "%_LIBPATH_%\zlib.lib"
|
||||
)
|
||||
|
||||
echo ---------- EXPAT building with cmake -----------------
|
||||
set "_TARGET_=--target expat"
|
||||
if /I "%_MODE_%" == "static" (
|
||||
call:buildLib %_EXPAT_% -DCMAKE_INSTALL_PREFIX=%_INSTALL_% -DBUILD_shared=0 -DCMAKE_C_FLAGS_RELEASE=/MT -DBUILD_examples=0 -DBUILD_tests=0
|
||||
if /I "%_SHARED_%" == "0" (
|
||||
call:buildLib %_EXPAT_% -DCMAKE_INSTALL_PREFIX=%_INSTALL_% -DBUILD_shared=0 -DCMAKE_C_FLAGS_RELEASE=/MT -DCMAKE_C_FLAGS_DEBUG=/MTd -DBUILD_examples=0 -DBUILD_tests=0
|
||||
) else (
|
||||
call:buildLib %_EXPAT_% -DCMAKE_INSTALL_PREFIX=%_INSTALL_%
|
||||
call:buildLib %_EXPAT_% -DCMAKE_INSTALL_PREFIX=%_INSTALL_% -DBUILD_examples=0 -DBUILD_tests=0
|
||||
)
|
||||
set _TARGET_=
|
||||
|
||||
@ -239,7 +296,7 @@ if DEFINED _WEBREADY_ (
|
||||
call:buildLib %_CURL_% -DCMAKE_INSTALL_PREFIX=%_INSTALL_% -DCMAKE_LIBRARY_PATH=%_LIBPATH_% -DCMAKE_INCLUDE_PATH=%_INCPATH_% -DWITH_GSSAPI=OFF -DWITH_ZLIB=OFF -DWITH_SFTP=OFF -DWITH_SERVER=OFF -DWITH_EXAMPLES=OFF -DWITH_NACL=OFF -DWITH_PCAP=OFF -DCMAKE_USE_LIBSSH2=OFF -DCMAKE_USE_LIBSSH=OFF
|
||||
if errorlevel 1 set _WEBREADY_=
|
||||
) ELSE (
|
||||
if defined _REBUILD_ rmdir/s/q "%_ONCPATH_%\curl" >NUL 2>NUL
|
||||
rmdir/s/q "%_ONCPATH_%\curl" >NUL 2>NUL
|
||||
if NOT EXIST "%_ONCPATH_%"\curl (
|
||||
echo ---------- CURL building with nmake -----------------
|
||||
IF NOT EXIST %_CURL_%.tar.gz svn export svn://dev.exiv2.org/svn/team/libraries/%_CURL_%.tar.gz >NUL
|
||||
@ -268,9 +325,8 @@ if NOT DEFINED _WEBREADY_ set _CURL_= && set _LIBSSH_=
|
||||
|
||||
echo ---------- EXIV2 building with cmake ------------------
|
||||
set "EXIV_B=%_WORK_%\exiv2"
|
||||
if defined _REBUILD_ IF EXIST "%EXIV_B%" rmdir/s/q "%EXIV_B%"
|
||||
IF NOT EXIST "%EXIV_B%" mkdir "%EXIV_B%"
|
||||
|
||||
IF EXIST "%EXIV_B%" rmdir/s/q "%EXIV_B%"
|
||||
IF NOT EXIST "%EXIV_B%" mkdir "%EXIV_B%"
|
||||
pushd "%EXIV_B%"
|
||||
set ENABLE_CURL=-DEXIV2_ENABLE_CURL=OFF
|
||||
set ENABLE_LIBSSH=-DEXIV2_ENABLE_SSH=OFF
|
||||
@ -280,19 +336,19 @@ pushd "%EXIV_B%"
|
||||
set ENABLE_DYNAMIC=ON
|
||||
|
||||
if defined _CURL_ set ENABLE_CURL=-DEXIV2_ENABLE_CURL=ON
|
||||
if defined _LIBSSH_ set ENABLE_SSH=-DEXIV2_ENABLE_SSH=ON
|
||||
if defined _LIBSSH_ set ENABLE_LIBSSH=-DEXIV2_ENABLE_SSH=ON
|
||||
if defined _WEBREADY_ set ENABLE_WEBREADY=-DEXIV2_ENABLE_WEBREADY=ON
|
||||
if defined _VIDEO_ set ENABLE_VIDEO=-DEXIV2_ENABLE_VIDEO=ON
|
||||
if /I "%_MODE_%" == "static" (
|
||||
set ENABLE_SHARED=OFF
|
||||
set ENABLE_DYNAMIC=OFF
|
||||
)
|
||||
set BUILD_SAMPLES=ON
|
||||
if DEFINED _NOSAMPLES_ set BUILD_SAMPLES=OFF
|
||||
set BUILD_SAMPLES=OFF
|
||||
if DEFINED _SAMPLES_ set BUILD_SAMPLES=ON
|
||||
|
||||
call:run cmake -G "%_GENERATOR_%" -DCMAKE_BUILD_TYPE=%_CONFIG_% %_LINK_% -DCMAKE_INSTALL_PREFIX=%_INSTALL_% -DCMAKE_LIBRARY_PATH=%_LIBPATH_% -DCMAKE_INCLUDE_PATH=%_INCPATH_% ^
|
||||
-DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_BUILD_SAMPLES=%BUILD_SAMPLES% ^
|
||||
-DEXIV2_ENABLE_WIN_UNICODE=OFF -DBUILD_SHARED_LIBS=%ENABLE_SHARED% ^
|
||||
call:run cmake -G "%_GENERATOR_%" -DCMAKE_BUILD_TYPE=%_CONFIG_% -DCMAKE_INSTALL_PREFIX=%_INSTALL_% -DCMAKE_LIBRARY_PATH=%_LIBPATH_% -DCMAKE_INCLUDE_PATH=%_INCPATH_% ^
|
||||
-DEXIV2_ENABLE_NLS=%_NLS_% -DEXIV2_BUILD_SAMPLES=%BUILD_SAMPLES% ^
|
||||
-DEXIV2_ENABLE_WIN_UNICODE=%_UNICODE_% -DBUILD_SHARED_LIBS=%ENABLE_SHARED% ^
|
||||
-DEXIV2_ENABLE_DYNAMIC_RUNTIME=%ENABLE_DYNAMIC% ^
|
||||
%ENABLE_WEBREADY% %ENABLE_CURL% %ENABLE_LIBSSH% %ENABLE_VIDEO% ^
|
||||
"%_EXIV2_%"
|
||||
@ -303,14 +359,16 @@ pushd "%EXIV_B%"
|
||||
goto error_end
|
||||
)
|
||||
|
||||
call:run cmake --build . --config %_CONFIG_%
|
||||
rem if DEFINED _BUILDX_ devenv %_WORK_%\exiv2\exiv2.sln /Build "%_CONFIG_%|%Platform%" /ProjectConfig INSTALL
|
||||
|
||||
if DEFINED _BUILD_ call:run cmake --build . --config %_CONFIG_%
|
||||
IF errorlevel 1 (
|
||||
echo "*** build errors in EXIV2 ***" >&2
|
||||
popd
|
||||
goto error_end
|
||||
)
|
||||
|
||||
call:run cmake --build . --config %_CONFIG_% --target install
|
||||
if DEFINED _BUILD_ call:run cmake --build . --config %_CONFIG_% --target install
|
||||
IF errorlevel 1 (
|
||||
echo "*** install errors in EXIV2 ***" >&2
|
||||
popd
|
||||
@ -327,12 +385,12 @@ if defined _TEST_ (
|
||||
|
||||
rem -----------------------------------------
|
||||
rem Exit
|
||||
rem end syntax: goto end
|
||||
rem end syntax: GOTO end
|
||||
:end
|
||||
endlocal
|
||||
exit /b 0
|
||||
|
||||
rem end with an error syntax: call:error_end
|
||||
rem end with an error syntax: GOTO error_end
|
||||
:error_end
|
||||
endlocal
|
||||
exit /b 1
|
||||
@ -344,7 +402,7 @@ rem echo (or don't if --silent). syntax: call:echo args ...
|
||||
if NOT DEFINED _SILENT_ echo %*%
|
||||
exit /b 0
|
||||
|
||||
rem run a command. syntax call:run args
|
||||
rem run a command. syntax call:run args
|
||||
:run
|
||||
if defined _VERBOSE_ (
|
||||
echo.
|
||||
@ -360,7 +418,6 @@ set _RESULT_=%ERRORLEVEL%
|
||||
if DEFINED _PAUSE_ pause
|
||||
exit /b %_RESULT_%
|
||||
|
||||
rem -----------------------------------------
|
||||
rem build a library with CMake. syntax: call:buildLib name cmake-args ...
|
||||
:buildLib
|
||||
cd "%_BUILDDIR_%"
|
||||
@ -377,7 +434,7 @@ IF NOT EXIST "%LOB%" 7z x "%LOB_TAR%"
|
||||
if NOT EXIST "%LOB_B%" mkdir "%LOB_B%"
|
||||
|
||||
pushd "%LOB_B%"
|
||||
call:run cmake -G "%_GENERATOR_%" -DCMAKE_BUILD_TYPE=%_CONFIG_% %_LINK_% %* ..\..\%LOB%
|
||||
call:run cmake -G "%_GENERATOR_%" -DCMAKE_BUILD_TYPE=%_CONFIG_% %* ..\..\%LOB%
|
||||
IF errorlevel 1 (
|
||||
echo "*** cmake errors in %LOB% ***"
|
||||
popd
|
||||
@ -389,7 +446,20 @@ pushd "%LOB_B%"
|
||||
echo "*** warning: build errors in %LOB% ***"
|
||||
)
|
||||
|
||||
call:run cmake --build . --config %_CONFIG_% --target install
|
||||
rem --static expat fails to install on VS 2010+
|
||||
set buildLibInstallExpatStatic=0
|
||||
if /I "%_TARGET_%" == "--target expat" if /I "%_MODE_%" == "static" set buildLibInstallExpatStatic=1
|
||||
|
||||
if /I "%buildLibInstallExpatStatic%" == "1" (
|
||||
rem msvc\expat-2.1.0\lib\expat*.h => msvc\dist\2005\x64\static\Release\include
|
||||
call:run copy/y "%_BUILDDIR_%\%LOB%\lib\expat*.h" "%_ONCPATH_%"
|
||||
|
||||
rem msvc\work\expat-2.1.0\release\*.lib => msvc\dist\2005\x64\static\Release\lib
|
||||
call:run copy/y "%_WORK_%\%LOB%\%_CONFIG_%\*.lib" "%_INSTALL_%\lib"
|
||||
) else (
|
||||
call:run cmake --build . --config %_CONFIG_% --target install
|
||||
)
|
||||
|
||||
IF errorlevel 1 (
|
||||
echo "*** warning: install errors in %LOB% ***"
|
||||
)
|
||||
@ -434,7 +504,7 @@ exit /b 0
|
||||
|
||||
rem -----------------------------------------
|
||||
rem this runs the compiler and reports _MSC_VER and sizeof(void*)
|
||||
:cltest
|
||||
:cltest
|
||||
pushd "%_EXIV2_%\contrib\cmake\msvc"
|
||||
nmake -a cltest.exe
|
||||
cltest.exe
|
||||
|
||||
@ -1 +1 @@
|
||||
for %%a in (32) do for %%v in (2010 2008 2005) do cmd /c "vcvars %%v %%a && cmakeBuild %* 2>&1"
|
||||
for %%a in (64 32) do for %%v in (2017 2015 2013 2012 2010 2008 2005) do for %%s in (--static --dll) do for %%r in (--release --debug) do for %%u in (--ascii --unicode) do cmd /c "vcvars %%v %%a && cmakeBuild --test %%s %%r %%u %* 2>&1"
|
||||
|
||||
@ -3,17 +3,19 @@
|
||||
rem set up some defaults to be used by cmakeBuild.cmd and related scripts
|
||||
rem use environment strings to set defaults which will not be clobbered by this script
|
||||
|
||||
if not defined _CONFIG_ SET _CONFIG_=Release
|
||||
if NOT DEFINED _WORK_ SET _WORK_=work
|
||||
if NOT DEFINED _EXIV2_ SET _EXIV2_=..\..\..
|
||||
if NOT DEFINED _CURL_ SET _CURL_=curl-7.45.0
|
||||
if NOT DEFINED _LIBSSH_ SET _LIBSSH_=libssh-0.7.2
|
||||
if NOT DEFINED _OPENSSL_ SET _OPENSSL_=openssl-1.0.1p
|
||||
if NOT DEFINED _ZLIB_ SET _ZLIB_=zlib-1.2.8
|
||||
if NOT DEFINED _EXPAT_ SET _EXPAT_=expat-2.1.0
|
||||
if NOT DEFINED _BASH_ SET _BASH_=c:\cygwin64\bin\bash.exe
|
||||
if NOT DEFINED _MODE_ SET _MODE_=dll
|
||||
if NOT DEFINED COPYCMD SET COPYCMD=/Y
|
||||
if NOT DEFINED _CONFIG_ set _CONFIG_=Release
|
||||
if NOT DEFINED _WORK_ set _WORK_=work
|
||||
if NOT DEFINED _EXIV2_ set _EXIV2_=..\..\..
|
||||
if NOT DEFINED _CURL_ set _CURL_=curl-7.45.0
|
||||
if NOT DEFINED _LIBSSH_ set _LIBSSH_=libssh-0.7.2
|
||||
if NOT DEFINED _OPENSSL_ set _OPENSSL_=openssl-1.0.1p
|
||||
if NOT DEFINED _ZLIB_ set _ZLIB_=zlib-1.2.8
|
||||
if NOT DEFINED _EXPAT_ set _EXPAT_=expat-2.1.0
|
||||
if NOT DEFINED _BASH_ set _BASH_=c:\cygwin64\bin\bash.exe
|
||||
if NOT DEFINED _SHARED_ set _SHARED_=1
|
||||
if NOT DEFINED _UNICODE_ set _UNICODE_=0
|
||||
if NOT DEFINED _NLS_ set _NLS_=0
|
||||
if NOT DEFINED COPYCMD set COPYCMD=/Y
|
||||
|
||||
rem ---------- check that EXIV2 exists
|
||||
echo checking that %_EXIV2_% exists
|
||||
|
||||
@ -43,12 +43,6 @@
|
||||
#ifndef EXV_XPATH_MEMIO
|
||||
#define EXV_XPATH_MEMIO 0
|
||||
#endif
|
||||
#ifndef EXV_USE_CURL
|
||||
#define EXV_USE_CURL 0
|
||||
#endif
|
||||
#ifndef EXV_USE_SSH
|
||||
#define EXV_USE_SSH 0
|
||||
#endif
|
||||
|
||||
// *****************************************************************************
|
||||
// namespace extensions
|
||||
@ -1117,7 +1111,7 @@ namespace Exiv2 {
|
||||
//@}
|
||||
};
|
||||
|
||||
#if EXV_USE_CURL == 1
|
||||
#ifdef EXV_USE_CURL
|
||||
/*!
|
||||
@brief Provides the http, https read/write access and ftp read access for the RemoteIo.
|
||||
This class is based on libcurl.
|
||||
@ -1173,7 +1167,7 @@ namespace Exiv2 {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if EXV_USE_SSH == 1
|
||||
#ifdef EXV_USE_SSH
|
||||
/*!
|
||||
@brief Provides the ssh read/write access and sftp read access for the RemoteIo.
|
||||
This class is based on libssh.
|
||||
@ -1262,7 +1256,7 @@ namespace Exiv2 {
|
||||
EXIV2API std::wstring ReplaceStringInPlace(std::wstring subject, const std::wstring& search,
|
||||
const std::wstring& replace);
|
||||
#endif
|
||||
#if EXV_USE_CURL == 1
|
||||
#ifdef EXV_USE_CURL
|
||||
/*!
|
||||
@brief The callback function is called by libcurl to write the data
|
||||
*/
|
||||
|
||||
@ -78,6 +78,11 @@ typedef int pid_t;
|
||||
# define CURL_STATICLIB
|
||||
#endif
|
||||
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
#include <windows.h>
|
||||
|
||||
#endif // _MSC_VER
|
||||
///// End of Visual Studio Support /////
|
||||
|
||||
|
||||
@ -53,17 +53,21 @@
|
||||
#include "exiv2/mrwimage.hpp"
|
||||
#include "exiv2/orfimage.hpp"
|
||||
#include "exiv2/pgfimage.hpp"
|
||||
|
||||
#ifdef EXV_HAVE_LIBZ
|
||||
#include "exiv2/pngimage.hpp"
|
||||
#endif
|
||||
|
||||
#include "exiv2/preview.hpp"
|
||||
#include "exiv2/properties.hpp"
|
||||
#include "exiv2/psdimage.hpp"
|
||||
#include "exiv2/rafimage.hpp"
|
||||
#include "exiv2/rw2image.hpp"
|
||||
#if EXV_USE_SSH == 1
|
||||
|
||||
#ifdef EXV_USE_SSH
|
||||
#include "exiv2/ssh.hpp"
|
||||
#endif
|
||||
|
||||
#include "exiv2/tags.hpp"
|
||||
#include "exiv2/tgaimage.hpp"
|
||||
#include "exiv2/tiffimage.hpp"
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#ifndef HTTP_HPP_
|
||||
#define HTTP_HPP_
|
||||
|
||||
#include "config.h"
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <algorithm>
|
||||
@ -18,10 +19,7 @@ namespace Exiv2 {
|
||||
EXIV2API int http(Exiv2::Dictionary& request,Exiv2::Dictionary& response,std::string& errors);
|
||||
}
|
||||
|
||||
#ifndef EXV_USE_CURL
|
||||
#define EXV_USE_CURL 0
|
||||
#endif
|
||||
#if EXV_USE_CURL == 1
|
||||
#ifdef EXV_USE_CURL
|
||||
#include <curl/curl.h>
|
||||
#endif
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
// included header files
|
||||
#include "config.h"
|
||||
|
||||
#if EXV_USE_SSH == 1
|
||||
#ifdef EXV_USE_SSH
|
||||
#include <libssh/libssh.h>
|
||||
#include <libssh/sftp.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
@ -1665,7 +1665,7 @@ namespace Exiv2 {
|
||||
template<>
|
||||
inline long ValueType<Rational>::toLong(long n) const
|
||||
{
|
||||
ok_ = (value_[n].second != 0 && -LARGE_INT < value_[n].first && value_[n].first < LARGE_INT);
|
||||
ok_ = (value_[n].second != 0 && INT_MIN < value_[n].first && value_[n].first < INT_MAX );
|
||||
if (!ok_) return 0;
|
||||
return value_[n].first / value_[n].second;
|
||||
}
|
||||
|
||||
@ -37,20 +37,14 @@
|
||||
// + standard includes
|
||||
#include <vector>
|
||||
|
||||
/*!
|
||||
@brief CPLUSPLUS11 is the value of macro --cplusplus for C++11
|
||||
*/
|
||||
#define CPLUSPLUS11 201103L
|
||||
|
||||
#if __cplusplus >= CPLUSPLUS11
|
||||
#if defined(HAVE_REGEX)
|
||||
# include <regex>
|
||||
/*!
|
||||
@brief exv_grep_keys_t is a vector of keys to match to strings
|
||||
*/
|
||||
typedef std::vector<std::regex> exv_grep_keys_t ;
|
||||
#else
|
||||
# ifdef EXV_HAVE_REGEX
|
||||
# include <regex.h>
|
||||
#elif defined(EXV_HAVE_REGEX_H)
|
||||
# include <regex.h>
|
||||
/*!
|
||||
@brief exv_grep_keys_t is a vector of keys to match to strings
|
||||
*/
|
||||
@ -76,7 +70,6 @@
|
||||
@brief exv_grep_keys_t is a vector of keys to match to strings
|
||||
*/
|
||||
typedef std::vector<Exiv2_grep_key_t> exv_grep_keys_t ;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*!
|
||||
|
||||
@ -1,29 +1,41 @@
|
||||
# CMake build system for exiv2 library and executables
|
||||
# Copyright 2008 by Patrick Spendrin <ps_ml@gmx.de>
|
||||
# Copyright 2010-2012 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
# CMakeLists.txt for i18n files
|
||||
|
||||
# automatically include all po files in the directory
|
||||
FILE(GLOB PO_FILES *.po)
|
||||
# List of files PO files
|
||||
set(PO_FILES bs.po
|
||||
de.po
|
||||
es.po
|
||||
fi.po
|
||||
fr.po
|
||||
gl.po
|
||||
ms.po
|
||||
pl.po
|
||||
pt.po
|
||||
ru.po
|
||||
sk.po
|
||||
sv.po
|
||||
ug.po
|
||||
uk.po
|
||||
vi.po
|
||||
)
|
||||
|
||||
UPDATE_TRANSLATIONS(exiv2 ${PO_FILES})
|
||||
|
||||
ADD_TRANSLATIONS(exiv2 ${PO_FILES})
|
||||
update_translations(exiv2 ${PO_FILES})
|
||||
add_translations(exiv2 ${PO_FILES})
|
||||
|
||||
##
|
||||
# execute xgettext on every file
|
||||
add_custom_target( pot-update
|
||||
COMMAND xgettext -d ${PACKAGE_NAME}
|
||||
-s
|
||||
-D ${CMAKE_CURRENT_SOURCE_DIR}/..
|
||||
-o ${PACKAGE_NAME}.pot
|
||||
-p ${CMAKE_CURRENT_SOURCE_DIR}/
|
||||
--from-code=UTF-8
|
||||
--files-from=POTFILES.in
|
||||
-j
|
||||
--keyword=_
|
||||
--package-name=${PACKAGE_NAME}
|
||||
--package-version=${PACKAGE_VERSION}
|
||||
--copyright-holder=${PACKAGE_COPYRIGHT}
|
||||
--msgid-bugs-address=${PACKAGE_BUGREPORT}
|
||||
)
|
||||
COMMAND xgettext -d ${PACKAGE_NAME}
|
||||
-s -D ${CMAKE_CURRENT_SOURCE_DIR}/..
|
||||
-o ${PACKAGE_NAME}.pot
|
||||
-p ${CMAKE_CURRENT_SOURCE_DIR}/
|
||||
--from-code=UTF-8 --files-from=POTFILES.in
|
||||
-j
|
||||
--keyword=_
|
||||
--package-name=${PACKAGE_NAME}
|
||||
--package-version=${PACKAGE_VERSION}
|
||||
--copyright-holder=${PACKAGE_COPYRIGHT}
|
||||
--msgid-bugs-address=${PACKAGE_BUGREPORT}
|
||||
)
|
||||
|
||||
# That's all Folks!
|
||||
##
|
||||
|
||||
@ -1,41 +1,41 @@
|
||||
# CMake build system for exiv2 library and executables
|
||||
# Copyright 2010-2012 Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
# Copyright 2008 Patrick Spendrin <ps_ml@gmx.de>
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
# CMakeLists.txt for exiv2 library sample applications
|
||||
|
||||
set( SAMPLES addmoddel.cpp
|
||||
convert-test.cpp
|
||||
easyaccess-test.cpp
|
||||
exifcomment.cpp
|
||||
exifdata-test.cpp
|
||||
exifdata.cpp
|
||||
exifprint.cpp
|
||||
exifvalue.cpp
|
||||
ini-test.cpp
|
||||
iotest.cpp
|
||||
iptceasy.cpp
|
||||
iptcprint.cpp
|
||||
iptctest.cpp
|
||||
key-test.cpp
|
||||
largeiptc-test.cpp
|
||||
mmap-test.cpp
|
||||
prevtest.cpp
|
||||
stringto-test.cpp
|
||||
taglist.cpp
|
||||
tiff-test.cpp
|
||||
werror-test.cpp
|
||||
write-test.cpp
|
||||
write2-test.cpp
|
||||
xmpparse.cpp
|
||||
xmpparser-test.cpp
|
||||
xmpprint.cpp
|
||||
xmpsample.cpp
|
||||
)
|
||||
set( SAMPLES
|
||||
addmoddel.cpp
|
||||
convert-test.cpp
|
||||
easyaccess-test.cpp
|
||||
exifcomment.cpp
|
||||
exifdata-test.cpp
|
||||
exifdata.cpp
|
||||
exifprint.cpp
|
||||
exifvalue.cpp
|
||||
ini-test.cpp
|
||||
iotest.cpp
|
||||
iptceasy.cpp
|
||||
iptcprint.cpp
|
||||
iptctest.cpp
|
||||
key-test.cpp
|
||||
largeiptc-test.cpp
|
||||
mmap-test.cpp
|
||||
prevtest.cpp
|
||||
stringto-test.cpp
|
||||
taglist.cpp
|
||||
tiff-test.cpp
|
||||
werror-test.cpp
|
||||
write-test.cpp
|
||||
write2-test.cpp
|
||||
xmpparse.cpp
|
||||
xmpparser-test.cpp
|
||||
xmpprint.cpp
|
||||
xmpsample.cpp
|
||||
)
|
||||
|
||||
##
|
||||
# build samples AND add them to the APPLICATIONS list
|
||||
foreach(entry ${SAMPLES})
|
||||
string( REPLACE ".cpp" "" target ${entry})
|
||||
add_executable( ${target} ${target}.cpp )
|
||||
list(APPEND APPLICATIONS ${target})
|
||||
add_test( ${target}_test ${target} )
|
||||
target_link_libraries( ${target} PRIVATE exiv2lib)
|
||||
install( TARGETS ${target} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
@ -43,21 +43,28 @@ endforeach()
|
||||
|
||||
###################################
|
||||
|
||||
if (MSVC)
|
||||
link_directories(${CMAKE_INSTALL_PREFIX}/lib)
|
||||
endif()
|
||||
|
||||
add_executable( metacopy metacopy.cpp ../src/utils.cpp)
|
||||
list(APPEND APPLICATIONS metacopy)
|
||||
target_link_libraries( metacopy PRIVATE exiv2lib)
|
||||
target_include_directories(metacopy PRIVATE ${CMAKE_SOURCE_DIR}/src) # To find utils.hpp
|
||||
|
||||
add_executable ( pathtest path-test.cpp ../src/utils.cpp)
|
||||
set_target_properties( pathtest PROPERTIES OUTPUT_NAME path-test )
|
||||
target_link_libraries( pathtest PRIVATE exiv2lib)
|
||||
add_executable( pathtest path-test.cpp ../src/utils.cpp)
|
||||
list(APPEND APPLICATIONS pathtest)
|
||||
set_target_properties( pathtest PROPERTIES OUTPUT_NAME path-test )
|
||||
target_link_libraries( pathtest PRIVATE exiv2lib)
|
||||
target_include_directories(pathtest PRIVATE ${CMAKE_SOURCE_DIR}/src) # To find utils.hpp
|
||||
|
||||
if(NOT EXV_HAVE_TIMEGM )
|
||||
target_sources(pathtest PRIVATE ../src/localtime.c)
|
||||
endif()
|
||||
|
||||
add_executable( exiv2json exiv2json.cpp Jzon.cpp)
|
||||
target_link_libraries( exiv2json PRIVATE exiv2lib)
|
||||
add_executable( exiv2json exiv2json.cpp Jzon.cpp)
|
||||
list(APPEND APPLICATIONS exiv2json)
|
||||
target_link_libraries( exiv2json PRIVATE exiv2lib)
|
||||
|
||||
install( TARGETS metacopy pathtest exiv2json RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
||||
@ -66,9 +73,10 @@ if (MSVC)
|
||||
target_sources(metacopy PRIVATE ../src/getopt_win32.c)
|
||||
endif()
|
||||
|
||||
if( EXIV2_ENABLE_XMP )
|
||||
if( EXPAT_FOUND )
|
||||
add_executable( geotag geotag.cpp)
|
||||
target_link_libraries( geotag PRIVATE exiv2lib ${ZLIB_LIBRARIES})
|
||||
list(APPEND APPLICATIONS geotag)
|
||||
target_link_libraries( geotag PRIVATE exiv2lib ${EXPAT_LIBRARIES})
|
||||
install( TARGETS geotag RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
endif()
|
||||
|
||||
@ -76,17 +84,29 @@ endif()
|
||||
# connection test application
|
||||
add_executable(conntest conntest.cpp)
|
||||
target_link_libraries(conntest PRIVATE exiv2lib)
|
||||
|
||||
# ******************************************************************************
|
||||
# exifprint application
|
||||
# ADD_EXECUTABLE( exifprint exifprint.cpp )
|
||||
# target_link_libraries( exifprint exiv2lib )
|
||||
list(APPEND APPLICATIONS conntest)
|
||||
|
||||
# ******************************************************************************
|
||||
# remotetest application
|
||||
add_executable(remotetest remotetest.cpp)
|
||||
target_link_libraries(remotetest exiv2lib)
|
||||
target_link_libraries(remotetest PRIVATE exiv2lib)
|
||||
list(APPEND APPLICATIONS remotetest)
|
||||
|
||||
# ******************************************************************************
|
||||
# set compiler -DEXV_HAVE_DLL when linking exiv2 dll
|
||||
foreach(application ${APPLICATIONS})
|
||||
message(STATUS "sample: ${application}")
|
||||
if ( BUILD_SHARED_LIBS )
|
||||
target_compile_definitions(${application} PRIVATE EXV_HAVE_DLL )
|
||||
endif()
|
||||
if( EXIV2_ENABLE_PNG )
|
||||
target_link_libraries( ${application} PRIVATE ${ZLIB_LIBRARIES} )
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# ******************************************************************************
|
||||
# Man page
|
||||
install( FILES exiv2samples.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 )
|
||||
|
||||
# That's all Folks!
|
||||
##
|
||||
|
||||
@ -26,7 +26,7 @@ void httpcon(const std::string& url, bool useHttp1_0 = false) {
|
||||
}
|
||||
}
|
||||
|
||||
#if EXV_USE_CURL == 1
|
||||
#ifdef EXV_USE_CURL
|
||||
void curlcon(const std::string& url, bool useHttp1_0 = false) {
|
||||
CURL* curl = curl_easy_init();
|
||||
if(!curl) {
|
||||
@ -68,7 +68,7 @@ void curlcon(const std::string& url, bool useHttp1_0 = false) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if EXV_USE_SSH == 1
|
||||
#ifdef EXV_USE_SSH
|
||||
void sshcon(const std::string& url) {
|
||||
Exiv2::Uri uri = Exiv2::Uri::Parse(url);
|
||||
Exiv2::Uri::Decode(uri);
|
||||
@ -125,7 +125,7 @@ int main(int argc,const char** argv)
|
||||
|
||||
bool isOk = false;
|
||||
try {
|
||||
#if EXV_USE_SSH == 1
|
||||
#ifdef EXV_USE_SSH
|
||||
if (prot == Exiv2::pSsh) {
|
||||
sshcon(url);
|
||||
isOk = true;
|
||||
@ -134,7 +134,7 @@ int main(int argc,const char** argv)
|
||||
isOk = true;
|
||||
}
|
||||
#endif
|
||||
#if EXV_USE_CURL == 1
|
||||
#ifdef EXV_USE_CURL
|
||||
if (prot == Exiv2::pHttp || prot == Exiv2::pHttps || prot == Exiv2::pFtp) {
|
||||
curlcon(url, useHttp1_0);
|
||||
isOk = true;
|
||||
|
||||
@ -1,87 +1,6 @@
|
||||
# CMake build system for exiv2 library and executables
|
||||
# Copyright 2015- Daniel Kaneider <danielkaneider@users.sf.net>
|
||||
# Copyright 2010-2012 Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
# Copyright 2008 Patrick Spendrin <ps_ml@gmx.de>
|
||||
# CMakeLists.txt for exiv2 library and command-line program
|
||||
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
# Private headers which are only needed for the library itself
|
||||
set( LIBEXIV2_PRIVATE_HDR canonmn_int.hpp
|
||||
casiomn_int.hpp
|
||||
cr2image_int.hpp
|
||||
crwimage_int.hpp
|
||||
fujimn_int.hpp
|
||||
makernote_int.hpp
|
||||
minoltamn_int.hpp
|
||||
nikonmn_int.hpp
|
||||
olympusmn_int.hpp
|
||||
orfimage_int.hpp
|
||||
panasonicmn_int.hpp
|
||||
pentaxmn_int.hpp
|
||||
pngchunk_int.hpp
|
||||
rcsid_int.hpp
|
||||
rw2image_int.hpp
|
||||
samsungmn_int.hpp
|
||||
sigmamn_int.hpp
|
||||
sonymn_int.hpp
|
||||
tags_int.hpp
|
||||
tiffcomposite_int.hpp
|
||||
tifffwd_int.hpp
|
||||
tiffimage_int.hpp
|
||||
tiffvisitor_int.hpp
|
||||
)
|
||||
|
||||
# Add standalone C++ header files to this list
|
||||
set( LIBEXIV2_HDR ../include/exiv2/asfvideo.hpp
|
||||
../include/exiv2/basicio.hpp
|
||||
../include/exiv2/bmpimage.hpp
|
||||
../include/exiv2/config.h
|
||||
../include/exiv2/convert.hpp
|
||||
../include/exiv2/cr2image.hpp
|
||||
../include/exiv2/crwimage.hpp
|
||||
../include/exiv2/datasets.hpp
|
||||
../include/exiv2/easyaccess.hpp
|
||||
../include/exiv2/epsimage.hpp
|
||||
../include/exiv2/error.hpp
|
||||
../include/exiv2/exif.hpp
|
||||
../include/exiv2/exiv2.hpp
|
||||
../include/exiv2/futils.hpp
|
||||
../include/exiv2/gifimage.hpp
|
||||
../include/exiv2/http.hpp
|
||||
../include/exiv2/image.hpp
|
||||
../include/exiv2/ini.hpp
|
||||
../include/exiv2/iptc.hpp
|
||||
../include/exiv2/jp2image.hpp
|
||||
../include/exiv2/jpgimage.hpp
|
||||
../include/exiv2/matroskavideo.hpp
|
||||
../include/exiv2/metadatum.hpp
|
||||
../include/exiv2/mrwimage.hpp
|
||||
../include/exiv2/orfimage.hpp
|
||||
../include/exiv2/pgfimage.hpp
|
||||
../include/exiv2/preview.hpp
|
||||
../include/exiv2/properties.hpp
|
||||
../include/exiv2/psdimage.hpp
|
||||
../include/exiv2/quicktimevideo.hpp
|
||||
../include/exiv2/rafimage.hpp
|
||||
../include/exiv2/riffvideo.hpp
|
||||
../include/exiv2/rwlock.hpp
|
||||
../include/exiv2/rw2image.hpp
|
||||
../include/exiv2/tags.hpp
|
||||
../include/exiv2/tgaimage.hpp
|
||||
../include/exiv2/tiffimage.hpp
|
||||
../include/exiv2/types.hpp
|
||||
../include/exiv2/utilsvideo.hpp
|
||||
../include/exiv2/value.hpp
|
||||
../include/exiv2/version.hpp
|
||||
../include/exiv2/webpimage.hpp
|
||||
../include/exiv2/xmp_exiv2.hpp
|
||||
../include/exiv2/xmpsidecar.hpp
|
||||
../include/exiv2/utilsvideo.hpp
|
||||
${CMAKE_BINARY_DIR}/exv_conf.h
|
||||
)
|
||||
|
||||
# Add library C++ source files to this list
|
||||
# C++ source files
|
||||
set( LIBEXIV2_SRC asfvideo.cpp
|
||||
basicio.cpp
|
||||
bigtiffimage.cpp
|
||||
@ -142,6 +61,82 @@ set( LIBEXIV2_SRC asfvideo.cpp
|
||||
utilsvideo.cpp
|
||||
)
|
||||
|
||||
# Public C++ header files
|
||||
set( LIBEXIV2_HDR ../include/exiv2/asfvideo.hpp
|
||||
../include/exiv2/basicio.hpp
|
||||
../include/exiv2/bmpimage.hpp
|
||||
../include/exiv2/config.h
|
||||
../include/exiv2/convert.hpp
|
||||
../include/exiv2/cr2image.hpp
|
||||
../include/exiv2/crwimage.hpp
|
||||
../include/exiv2/datasets.hpp
|
||||
../include/exiv2/easyaccess.hpp
|
||||
../include/exiv2/epsimage.hpp
|
||||
../include/exiv2/error.hpp
|
||||
../include/exiv2/exif.hpp
|
||||
../include/exiv2/exiv2.hpp
|
||||
../include/exiv2/futils.hpp
|
||||
../include/exiv2/gifimage.hpp
|
||||
../include/exiv2/http.hpp
|
||||
../include/exiv2/image.hpp
|
||||
../include/exiv2/ini.hpp
|
||||
../include/exiv2/iptc.hpp
|
||||
../include/exiv2/jp2image.hpp
|
||||
../include/exiv2/jpgimage.hpp
|
||||
../include/exiv2/matroskavideo.hpp
|
||||
../include/exiv2/metadatum.hpp
|
||||
../include/exiv2/mrwimage.hpp
|
||||
../include/exiv2/orfimage.hpp
|
||||
../include/exiv2/pgfimage.hpp
|
||||
../include/exiv2/preview.hpp
|
||||
../include/exiv2/properties.hpp
|
||||
../include/exiv2/psdimage.hpp
|
||||
../include/exiv2/quicktimevideo.hpp
|
||||
../include/exiv2/rafimage.hpp
|
||||
../include/exiv2/riffvideo.hpp
|
||||
../include/exiv2/rwlock.hpp
|
||||
../include/exiv2/rw2image.hpp
|
||||
../include/exiv2/tags.hpp
|
||||
../include/exiv2/tgaimage.hpp
|
||||
../include/exiv2/tiffimage.hpp
|
||||
../include/exiv2/types.hpp
|
||||
../include/exiv2/utilsvideo.hpp
|
||||
../include/exiv2/value.hpp
|
||||
../include/exiv2/version.hpp
|
||||
../include/exiv2/webpimage.hpp
|
||||
../include/exiv2/xmp_exiv2.hpp
|
||||
../include/exiv2/xmpsidecar.hpp
|
||||
../include/exiv2/utilsvideo.hpp
|
||||
../include/exiv2/exv_conf.h
|
||||
)
|
||||
|
||||
# Private headers only needed to build the library
|
||||
set( LIBEXIV2_PRIVATE_HDR canonmn_int.hpp
|
||||
casiomn_int.hpp
|
||||
cr2image_int.hpp
|
||||
crwimage_int.hpp
|
||||
fujimn_int.hpp
|
||||
makernote_int.hpp
|
||||
minoltamn_int.hpp
|
||||
nikonmn_int.hpp
|
||||
olympusmn_int.hpp
|
||||
orfimage_int.hpp
|
||||
panasonicmn_int.hpp
|
||||
pentaxmn_int.hpp
|
||||
pngchunk_int.hpp
|
||||
rcsid_int.hpp
|
||||
rw2image_int.hpp
|
||||
samsungmn_int.hpp
|
||||
sigmamn_int.hpp
|
||||
sonymn_int.hpp
|
||||
tags_int.hpp
|
||||
tiffcomposite_int.hpp
|
||||
tifffwd_int.hpp
|
||||
tiffimage_int.hpp
|
||||
tiffvisitor_int.hpp
|
||||
)
|
||||
|
||||
|
||||
if( EXIV2_ENABLE_WEBREADY )
|
||||
if( EXIV2_ENABLE_CURL)
|
||||
set( LIBEXIV2_SRC ${LIBEXIV2_SRC} easyaccess.cpp)
|
||||
@ -180,11 +175,13 @@ endif()
|
||||
set_target_properties( exiv2lib PROPERTIES
|
||||
VERSION ${GENERIC_LIB_VERSION}
|
||||
SOVERSION ${GENERIC_LIB_SOVERSION}
|
||||
DEFINE_SYMBOL EXV_BUILDING_LIB
|
||||
OUTPUT_NAME exiv2
|
||||
)
|
||||
|
||||
target_compile_definitions(exiv2lib PRIVATE EXV_LOCALEDIR="${CMAKE_INSTALL_LOCALEDIR}" )
|
||||
target_compile_definitions(exiv2lib PRIVATE EXV_LOCALEDIR="${CMAKE_INSTALL_LOCALEDIR}" EXV_BUILDING_LIB )
|
||||
if ( BUILD_SHARED_LIBS )
|
||||
target_compile_definitions(exiv2lib PRIVATE EXV_HAVE_DLL )
|
||||
endif()
|
||||
|
||||
if ( ${BUILD_SHARED_LIBS} )
|
||||
target_compile_definitions(exiv2lib PUBLIC EXV_HAVE_DLL)
|
||||
@ -239,9 +236,14 @@ if ( MSVC )
|
||||
PSAPI_VERSION=1 # to be compatible with <= WinVista (#905)
|
||||
)
|
||||
|
||||
source_group("Header Files" FILES ${LIBEXIV2_HDR} )
|
||||
source_group("Header Files" FILES ${LIBCURL_HDR} )
|
||||
source_group("Header Files" FILES ${SSH_HDR} )
|
||||
target_link_libraries( exiv2lib PRIVATE ${CURL_LIBRARIES} ${SSH_LIBRARIES})
|
||||
else()
|
||||
if ( UNIX )
|
||||
target_link_libraries( exiv2lib PRIVATE ${CMAKE_DL_LIBS})
|
||||
# TODO: Check if this is really needed.
|
||||
if ( UNIX AND NOT FREEBSD )
|
||||
target_link_libraries( exiv2lib PRIVATE ${CMAKE_DL_LIBS}) # -ldl = dynamic loader used by src/version.cpp
|
||||
endif()
|
||||
|
||||
if (CYGWIN OR MINGW)
|
||||
@ -277,18 +279,22 @@ install(FILES ${LIBEXIV2_HDR}
|
||||
# ******************************************************************************
|
||||
# exiv2 application
|
||||
|
||||
set( EXIV2_SRC exiv2.cpp
|
||||
exiv2app.hpp
|
||||
actions.cpp
|
||||
actions.hpp
|
||||
utils.cpp
|
||||
utils.hpp
|
||||
set( EXIV2_SRC
|
||||
exiv2.cpp
|
||||
exiv2app.hpp
|
||||
actions.cpp
|
||||
actions.hpp
|
||||
utils.cpp
|
||||
utils.hpp
|
||||
)
|
||||
|
||||
if(EXIV2_ENABLE_TOOLS)
|
||||
if(EXIV2_BUILD_EXIV2_COMMAND)
|
||||
add_executable( exiv2 ${EXIV2_SRC} )
|
||||
target_compile_definitions(exiv2 PRIVATE EXV_LOCALEDIR="${CMAKE_INSTALL_LOCALEDIR}" )
|
||||
target_link_libraries( exiv2 PRIVATE exiv2lib )
|
||||
if ( BUILD_SHARED_LIBS )
|
||||
target_compile_definitions(exiv2 PRIVATE EXV_HAVE_DLL )
|
||||
endif()
|
||||
install(TARGETS exiv2 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
endif()
|
||||
|
||||
@ -309,3 +315,6 @@ endif()
|
||||
# ******************************************************************************
|
||||
# Man page
|
||||
install( FILES exiv2.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 )
|
||||
|
||||
# That's all Folks!
|
||||
##
|
||||
|
||||
@ -591,11 +591,10 @@ namespace Action {
|
||||
for (Params::Greps::const_iterator g = Params::instance().greps_.begin();
|
||||
!result && g != Params::instance().greps_.end(); ++g)
|
||||
{
|
||||
#if __cplusplus >= CPLUSPLUS11
|
||||
#if defined(EXV_HAVE_REGEX)
|
||||
std::smatch m;
|
||||
result = std::regex_search(key,m, *g);
|
||||
#else
|
||||
#ifdef EXV_HAVE_REGEX
|
||||
#elif defined(EXV_HAVE_REGEX_H)
|
||||
result = regexec( &(*g), key.c_str(), 0, NULL, 0) == 0 ;
|
||||
#else
|
||||
std::string Pattern(g->pattern_);
|
||||
@ -606,7 +605,6 @@ namespace Action {
|
||||
std::transform(Key.begin() , Key.end() ,Key.begin() , ::tolower);
|
||||
}
|
||||
result = Key.find(Pattern) != std::string::npos;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
return result ;
|
||||
|
||||
@ -46,6 +46,7 @@ EXIV2_RCSID("@(#) $Id$")
|
||||
#include <cstdlib> // for alloc, realloc, free
|
||||
#include <sys/types.h> // for stat, chmod
|
||||
#include <sys/stat.h> // for stat, chmod
|
||||
|
||||
#ifdef EXV_HAVE_SYS_MMAN_H
|
||||
# include <sys/mman.h> // for mmap and munmap
|
||||
#endif
|
||||
@ -55,13 +56,15 @@ EXIV2_RCSID("@(#) $Id$")
|
||||
#ifdef EXV_HAVE_UNISTD_H
|
||||
# include <unistd.h> // for getpid, stat
|
||||
#endif
|
||||
#if EXV_USE_CURL == 1
|
||||
#include <curl/curl.h>
|
||||
|
||||
#ifdef EXV_USE_CURL
|
||||
# include <curl/curl.h>
|
||||
#endif
|
||||
#if EXV_USE_SSH == 1
|
||||
#include "ssh.hpp"
|
||||
|
||||
#ifdef EXV_USE_SSH
|
||||
# include "ssh.hpp"
|
||||
#else
|
||||
#define mode_t unsigned short
|
||||
# define mode_t unsigned short
|
||||
#endif
|
||||
|
||||
// Platform specific headers for handling extended attributes (xattr)
|
||||
@ -2080,7 +2083,7 @@ namespace Exiv2 {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if EXV_USE_CURL == 1
|
||||
#ifdef EXV_USE_CURL
|
||||
//! Internal Pimpl structure of class RemoteIo.
|
||||
class CurlIo::CurlImpl : public Impl {
|
||||
public:
|
||||
@ -2329,7 +2332,7 @@ namespace Exiv2 {
|
||||
|
||||
#endif
|
||||
|
||||
#if EXV_USE_SSH == 1
|
||||
#ifdef EXV_USE_SSH
|
||||
//! Internal Pimpl structure of class RemoteIo.
|
||||
class SshIo::SshImpl : public Impl {
|
||||
public:
|
||||
@ -2628,7 +2631,7 @@ namespace Exiv2 {
|
||||
return subject;
|
||||
}
|
||||
#endif
|
||||
#if EXV_USE_CURL == 1
|
||||
#ifdef EXV_USE_CURL
|
||||
size_t curlWriter(char* data, size_t size, size_t nmemb,
|
||||
std::string* writerData)
|
||||
{
|
||||
|
||||
@ -47,7 +47,9 @@ EXIV2_RCSID("@(#) $Id$")
|
||||
#include <cassert>
|
||||
#include <cctype>
|
||||
|
||||
#ifdef EXV_HAVE_REGEX
|
||||
#if defined(EXV_HAVE_REGEX)
|
||||
#include <regex>
|
||||
#elif defined(EXV_HAVE_REGEX_H)
|
||||
#include <regex.h>
|
||||
#endif
|
||||
|
||||
@ -451,10 +453,9 @@ int Params::evalGrep( const std::string& optarg)
|
||||
std::string pattern;
|
||||
std::string ignoreCase("/i");
|
||||
bool bIgnoreCase = ends_with(optarg,ignoreCase,pattern);
|
||||
#if __cplusplus >= CPLUSPLUS11
|
||||
#if defined(EXV_HAVE_REGEX)
|
||||
greps_.push_back( std::regex(pattern, bIgnoreCase ? std::regex::icase|std::regex::extended : std::regex::extended) );
|
||||
#else
|
||||
#ifdef EXV_HAVE_REGEX
|
||||
#elif defined(EXV_HAVE_REGEX_H)
|
||||
// try to compile a reg-exp from the input argument and store it in the vector
|
||||
const size_t i = greps_.size();
|
||||
greps_.resize(i + 1);
|
||||
@ -478,7 +479,6 @@ int Params::evalGrep( const std::string& optarg)
|
||||
}
|
||||
#else
|
||||
greps_.push_back(Exiv2_grep_key_t(pattern,bIgnoreCase));
|
||||
#endif
|
||||
#endif
|
||||
return result;
|
||||
} // Params::evalGrep
|
||||
|
||||
@ -829,16 +829,19 @@ namespace Exiv2 {
|
||||
BasicIo::AutoPtr ImageFactory::createIo(const std::string& path, bool useCurl)
|
||||
{
|
||||
Protocol fProt = fileProtocol(path);
|
||||
#if EXV_USE_SSH == 1
|
||||
|
||||
#ifdef EXV_USE_SSH
|
||||
if (fProt == pSsh || fProt == pSftp) {
|
||||
return BasicIo::AutoPtr(new SshIo(path)); // may throw
|
||||
}
|
||||
#endif
|
||||
#if EXV_USE_CURL == 1
|
||||
|
||||
#ifdef EXV_USE_CURL
|
||||
if (useCurl && (fProt == pHttp || fProt == pHttps || fProt == pFtp)) {
|
||||
return BasicIo::AutoPtr(new CurlIo(path)); // may throw
|
||||
}
|
||||
#endif
|
||||
|
||||
if (fProt == pHttp)
|
||||
return BasicIo::AutoPtr(new HttpIo(path)); // may throw
|
||||
if (fProt == pFileUri)
|
||||
|
||||
@ -32,7 +32,8 @@ EXIV2_RCSID("@(#) $Id: rw2image.cpp 3201 2013-12-01 12:13:42Z ahuggel $")
|
||||
// included header files
|
||||
#include "config.h"
|
||||
#include "ssh.hpp"
|
||||
#if EXV_USE_SSH == 1
|
||||
|
||||
#ifdef EXV_USE_SSH
|
||||
// class member definitions
|
||||
namespace Exiv2 {
|
||||
|
||||
|
||||
@ -31,15 +31,7 @@ EXIV2_RCSID("@(#) $Id$")
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifndef EXV_USE_SSH
|
||||
#define EXV_USE_SSH 0
|
||||
#endif
|
||||
|
||||
#ifndef EXV_USE_CURL
|
||||
#define EXV_USE_CURL 0
|
||||
#endif
|
||||
|
||||
#if EXV_USE_CURL == 1
|
||||
#ifdef EXV_USE_CURL
|
||||
#include <curl/curl.h>
|
||||
#endif
|
||||
|
||||
@ -53,32 +45,12 @@ EXIV2_RCSID("@(#) $Id$")
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef EXV_HAVE_XMP_TOOLKIT
|
||||
#define EXV_HAVE_XMP_TOOLKIT 0
|
||||
#endif
|
||||
|
||||
#ifndef EXV_HAVE_STRINGS
|
||||
#define EXV_HAVE_STRINGS 0
|
||||
#endif
|
||||
|
||||
#ifndef EXV_SYS_TYPES
|
||||
#define EXV_SYS_TYPES 0
|
||||
#endif
|
||||
|
||||
#ifndef EXV_HAVE_UNISTD
|
||||
#define EXV_HAVE_UNISTD 0
|
||||
#endif
|
||||
|
||||
#ifndef EXV_UNICODE_PATH
|
||||
#define EXV_UNICODE_PATH 0
|
||||
#endif
|
||||
|
||||
#include "http.hpp"
|
||||
#include "version.hpp"
|
||||
#include "makernote_int.hpp"
|
||||
|
||||
// Adobe XMP Toolkit
|
||||
#if EXV_HAVE_XMP_TOOLKIT
|
||||
#ifdef EXV_HAVE_XMP_TOOLKIT
|
||||
#include "xmp_exiv2.hpp"
|
||||
#endif
|
||||
|
||||
@ -173,11 +145,10 @@ static bool shouldOutput(const exv_grep_keys_t& greps,const char* key,const std:
|
||||
!bPrint && g != greps.end() ; ++g
|
||||
) {
|
||||
std::string Key(key);
|
||||
#if __cplusplus >= CPLUSPLUS11
|
||||
#if defined(EXV_HAVE_REGEX)
|
||||
std::smatch m;
|
||||
bPrint = std::regex_search(Key,m,*g) || std::regex_search(value,m,*g);
|
||||
#else
|
||||
#ifdef EXV_HAVE_REGEX
|
||||
#elif defined(EXV_HAVE_REGEX_H)
|
||||
bPrint = ( 0 == regexec( &(*g), key , 0, NULL, 0)
|
||||
|| 0 == regexec( &(*g), value.c_str(), 0, NULL, 0)
|
||||
);
|
||||
@ -191,7 +162,6 @@ static bool shouldOutput(const exv_grep_keys_t& greps,const char* key,const std:
|
||||
std::transform(Value.begin() , Value.end() ,Value.begin() , ::tolower);
|
||||
}
|
||||
bPrint = Key.find(Pattern) != std::string::npos || Value.find(Pattern) != std::string::npos;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
return bPrint;
|
||||
@ -321,6 +291,8 @@ void Exiv2::dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys)
|
||||
|
||||
int enable_video =0;
|
||||
int enable_webready =0;
|
||||
int use_curl =0;
|
||||
int use_ssh =0;
|
||||
|
||||
#ifdef EXV_HAVE_GMTIME_R
|
||||
have_gmtime_r=1;
|
||||
@ -462,6 +434,14 @@ void Exiv2::dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys)
|
||||
enable_webready=1;
|
||||
#endif
|
||||
|
||||
#ifdef EXV_USE_CURL
|
||||
use_curl=1;
|
||||
#endif
|
||||
|
||||
#ifdef EXV_USE_SSH
|
||||
use_ssh=1;
|
||||
#endif
|
||||
|
||||
#if defined(WIN32) || defined(__CYGWIN__) || defined(__MINGW__)
|
||||
// enumerate loaded libraries and determine path to executable
|
||||
HMODULE handles[200];
|
||||
@ -518,8 +498,8 @@ void Exiv2::dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys)
|
||||
output(os,keys,"version" , __VERSION__);
|
||||
output(os,keys,"date" , __DATE__ );
|
||||
output(os,keys,"time" , __TIME__ );
|
||||
output(os,keys,"ssh" , EXV_USE_SSH);
|
||||
#if EXV_USE_CURL == 1
|
||||
|
||||
#ifdef EXV_USE_CURL
|
||||
std::string curl_protocols;
|
||||
curl_version_info_data* vinfo = curl_version_info(CURLVERSION_NOW);
|
||||
for (int i = 0; vinfo->protocols[i]; i++) {
|
||||
@ -527,9 +507,9 @@ void Exiv2::dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys)
|
||||
curl_protocols += " " ;
|
||||
}
|
||||
output(os,keys,"curlprotocols" ,curl_protocols);
|
||||
#else
|
||||
output(os,keys,"curl" , EXV_USE_CURL);
|
||||
#endif
|
||||
|
||||
output(os,keys,"curl" , use_curl);
|
||||
output(os,keys,"id" , "$Id$");
|
||||
if ( libs.begin() != libs.end() ) {
|
||||
output(os,keys,"executable" ,*libs.begin());
|
||||
@ -572,6 +552,9 @@ void Exiv2::dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys)
|
||||
output(os,keys,"have_unicode_path" ,have_unicode_path);
|
||||
output(os,keys,"enable_video" ,enable_video );
|
||||
output(os,keys,"enable_webready" ,enable_webready );
|
||||
output(os,keys,"use_curl" ,use_curl );
|
||||
output(os,keys,"use_ssh" ,use_ssh );
|
||||
|
||||
output(os,keys,"config_path" ,Exiv2::Internal::getExiv2ConfigPath());
|
||||
|
||||
// #1147
|
||||
@ -581,7 +564,7 @@ void Exiv2::dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys)
|
||||
uid_t gid = getgid() ; output(os,keys,"gid" , gid );
|
||||
#endif
|
||||
|
||||
#if EXV_HAVE_XMP_TOOLKIT
|
||||
#ifdef EXV_HAVE_XMP_TOOLKIT
|
||||
const char* name = "xmlns";
|
||||
|
||||
Exiv2::Dictionary ns;
|
||||
|
||||
@ -1,10 +1,6 @@
|
||||
# CMake build system for exiv2 library and executables
|
||||
# Copyright 2010-2012 Gilles Caulier <caulier dot gilles at gmail dot com>
|
||||
# Copyright 2008 Patrick Spendrin <ps_ml at gmx dot de>
|
||||
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
# CMakeLists.txt exiv2/xmpsdk
|
||||
|
||||
# list files to be use to build XMPsdk
|
||||
set(XMPSRC src/ExpatAdapter.cpp
|
||||
src/MD5.cpp
|
||||
src/ParseRDF.cpp
|
||||
@ -21,14 +17,14 @@ set(XMPSRC src/ExpatAdapter.cpp
|
||||
src/XMPMeta.cpp
|
||||
src/XMPUtils-FileInfo.cpp
|
||||
src/XMPUtils.cpp
|
||||
include/MD5.h
|
||||
include/TXMPIterator.hpp
|
||||
include/TXMPMeta.hpp
|
||||
include/TXMPUtils.hpp
|
||||
include/XMP_Const.h
|
||||
include/XMP_Environment.h
|
||||
include/XMP.incl_cpp
|
||||
include/XMPSDK.hpp
|
||||
include/MD5.h
|
||||
include/TXMPIterator.hpp
|
||||
include/TXMPMeta.hpp
|
||||
include/TXMPUtils.hpp
|
||||
include/XMP_Const.h
|
||||
include/XMP_Environment.h
|
||||
include/XMP.incl_cpp
|
||||
include/XMPSDK.hpp
|
||||
include/XMP_Version.h
|
||||
)
|
||||
|
||||
@ -74,9 +70,11 @@ if( EXIV2_ENABLE_LIBXMP )
|
||||
set_property(TARGET xmp_object PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
# 1119 Install libxmp.a for use by third party applications (Thanks, Emmanuel)
|
||||
install(TARGETS xmp
|
||||
# 1119 Install libxmp.a for use by third party applications (Thanks, Emmanuel)
|
||||
install(TARGETS xmp
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
endif()
|
||||
)
|
||||
|
||||
# That's all Folks!
|
||||
##
|
||||
|
||||
281
xmpsdk/buildXMPsdk.cmd
Normal file
281
xmpsdk/buildXMPsdk.cmd
Normal file
@ -0,0 +1,281 @@
|
||||
@echo off
|
||||
rem ----
|
||||
rem buildXMPsdk.cmd
|
||||
setlocal enableextensions
|
||||
set "_THIS_=%0%"
|
||||
|
||||
GOTO main
|
||||
:help
|
||||
echo %_THIS_% [Options]
|
||||
echo.Options: --help ^| --2016 ^| --2014 ^| --2013 ^| --64 ^| --32 ^| --rebuild ^| --dryrun ^| --distclean ^| --generate
|
||||
echo --sdk [2013^|2014^|2016] ^| --bit [32^|64] ^| --vs [2005^|2008^|2010^|2012^|2013^|2015^|2017] ^| --log [path]
|
||||
exit /b 0
|
||||
|
||||
:main
|
||||
rem ----
|
||||
rem always run this script in <exiv2dir>/xmpsdk
|
||||
cd %~dp0
|
||||
|
||||
set "_BUILDDIR_=%CD%"
|
||||
if NOT DEFINED _SDK_ set _SDK_=2016
|
||||
if NOT DEFINED _BIT_ set _BIT_=64
|
||||
if NOT DEFINED _VS_ set _VS_=2015
|
||||
|
||||
:GETOPTS
|
||||
if /I "%1" == "--2013" set "_SDK_=2013"
|
||||
if /I "%1" == "--2014" set "_SDK_=2014"
|
||||
if /I "%1" == "--2016" set "_SDK_=2016"
|
||||
if /I "%1" == "2013" set "_SDK_=2013"
|
||||
if /I "%1" == "2014" set "_SDK_=2014"
|
||||
if /I "%1" == "2016" set "_SDK_=2016"
|
||||
|
||||
if /I "%1" == "--32" set "_BIT_=32"
|
||||
if /I "%1" == "--64" set "_BIT_=64"
|
||||
if /I "%1" == "32" set "_BIT_=32"
|
||||
if /I "%1" == "64" set "_BIT_=64"
|
||||
|
||||
if /I "%1" == "--vs" set "_VS_=%2"&shift
|
||||
if /I "%1" == "--sdk" set "_SDK_=%2"&shift
|
||||
if /I "%1" == "--bit" set "_BIT_=%2"&shift
|
||||
if /I "%1" == "--log" set "_LOG_=%2"&shift
|
||||
|
||||
if /I "%1" == "--verbose" echo on
|
||||
if /I "%1" == "--silent" set _SILENT_=1
|
||||
if /I "%1" == "--help" call:help && goto end
|
||||
if /I "%1" == "--rebuild" set _REBUILD_=1
|
||||
if /I "%1" == "--distclean" set _DISTCLEAN_=1
|
||||
if /I "%1" == "--dryrun" set _DRYRUN_=1
|
||||
if /I "%1" == "--generate" set _GENERATE_=1
|
||||
|
||||
shift
|
||||
if not (%1) EQU () goto GETOPTS
|
||||
|
||||
if /I "%_SDK_%" == "2013" (
|
||||
set "_SDK_=XMP-Toolkit-SDK-CC201306"
|
||||
set "_ZIP_=XMP-Toolkit-SDK-CC-201306"
|
||||
)
|
||||
if /I "%_SDK_%" == "2014" (
|
||||
set "_SDK_=XMP-Toolkit-SDK-CC201412"
|
||||
set "_ZIP_=XMP-Toolkit-SDK-CC201412"
|
||||
)
|
||||
if /I "%_SDK_%" == "2016" (
|
||||
set "_SDK_=XMP-Toolkit-SDK-CC201607"
|
||||
set "_ZIP_=XMP-Toolkit-SDK-CC201607"
|
||||
)
|
||||
|
||||
if /I "%_VS_%" == "2017" set "_VC_=15"
|
||||
if /I "%_VS_%" == "2015" set "_VC_=14"
|
||||
if /I "%_VS_%" == "2013" set "_VC_=12"
|
||||
if /I "%_VS_%" == "2012" set "_VC_=11"
|
||||
if /I "%_VS_%" == "2010" set "_VC_=10"
|
||||
if /I "%_VS_%" == "2008" set "_VC_=9"
|
||||
if /I "%_VS_%" == "2005" set "_VC_=8"
|
||||
set "_GENERATOR_=Visual Studio %_VC_% %_VS_%"
|
||||
IF /I "%_BIT_%" == "64" set "_GENERATOR_=Visual Studio %_VC_% %_VS_% Win64"
|
||||
if DEFINED _DRYRUN_ (
|
||||
call:report
|
||||
GOTO end
|
||||
)
|
||||
|
||||
if DEFINED _REBUILD_ if EXIST Adobe\%_SDK_% rmdir/s/q Adobe\%_SDK_%
|
||||
if DEFINED _DISTCLEAN_ if EXIST Adobe rmdir/s/q Adobe
|
||||
|
||||
rem ----
|
||||
rem if it's already built, we're done
|
||||
set "_TARGET_=Adobe\%_SDK_%\public\doesntexist
|
||||
if /I %_BIT_% == 64 set "_TARGET_=Adobe\%_SDK_%\public\libraries\windows_x64\Release\XMPCoreStatic.lib"
|
||||
if /I %_BIT_% == 32 set "_TARGET_=Adobe\%_SDK_%\public\libraries\windows\Release\XMPCoreStatic.lib"
|
||||
if EXIST %_TARGET_% (
|
||||
dir %_TARGET_%
|
||||
GOTO end
|
||||
)
|
||||
|
||||
rem ----
|
||||
call:echo testing 7z is on path
|
||||
7z > NUL
|
||||
IF ERRORLEVEL 1 (
|
||||
echo "*** please ensure 7z.exe is on the PATH ***"
|
||||
GOTO error_end
|
||||
)
|
||||
|
||||
rem ----
|
||||
call:echo testing curl is on path
|
||||
curl --version > NUL
|
||||
IF ERRORLEVEL 1 (
|
||||
echo "*** please ensure cmake.exe is on the PATH ***"
|
||||
GOTO error_end
|
||||
)
|
||||
|
||||
rem ----
|
||||
call:echo testing cmake.exe is on path
|
||||
cmake.exe > NUL
|
||||
IF ERRORLEVEL 1 (
|
||||
echo "*** please ensure cmake.exe is on the PATH ***"
|
||||
GOTO error_end
|
||||
)
|
||||
|
||||
call:report
|
||||
|
||||
rem ----
|
||||
rem Download the code from Adobe
|
||||
if NOT EXIST Adobe\%_SDK_% (
|
||||
if NOT EXIST Adobe mkdir Adobe
|
||||
cd Adobe
|
||||
if NOT EXIST %_ZIP_%.zip curl -O http://download.macromedia.com/pub/developer/xmp/sdk/%_ZIP_%.zip
|
||||
IF NOT ERRORLEVEL 1 7z x %_ZIP_%.zip 2>nul
|
||||
cd ..
|
||||
)
|
||||
|
||||
if NOT EXIST Adobe\%_SDK_% (
|
||||
echo *** ERROR SDK = Adobe\%_SDK_% not found"
|
||||
GOTO error_end
|
||||
)
|
||||
|
||||
rem ----
|
||||
rem Copy in the third-party files
|
||||
xcopy/yesihq third-party\zlib Adobe\%_SDK_%\third-party\zlib
|
||||
xcopy/yesihq third-party\expat\lib Adobe\%_SDK_%\third-party\expat\lib
|
||||
xcopy/yesihq third-party\zuid\interfaces Adobe\%_SDK_%\third-party\zuid\interfaces
|
||||
|
||||
rem ----
|
||||
rem generate and build the SDK
|
||||
cd Adobe\%_SDK_%\build
|
||||
|
||||
if EXIST CMakeCache.txt del CMakeCache.txt
|
||||
if EXIST CMakeFiles rmdir/s/q CMakeFiles
|
||||
|
||||
rem ------------------------------------------------------------------------------
|
||||
rem The Adobe script GeneratXMPToolkitSDK_win.bat
|
||||
rem use the CMake Generators "Visual Studio 14 2015 Win64" and "Visual Studio 14 2015"
|
||||
rem Adobe generate the Visual Studio Solution with the CMake command:
|
||||
rem cmake ../../../. ^
|
||||
rem -G"Visual Studio 14 2015 Win64" ^ or -G"Visual Studio 14 2015"
|
||||
rem -DXMP_CMAKEFOLDER_NAME="vc14/static/windows_x64" ^
|
||||
rem -DCMAKE_CL_64=ON ^
|
||||
rem -DCMAKE_ARCH=x64 ^ or -DCMAKE_ARCH=x86
|
||||
rem -DXMP_BUILD_WARNING_AS_ERROR=ON ^
|
||||
rem -DXMP_BUILD_STATIC=ON
|
||||
rem -DCMAKE_BUILD_TYPE=Release
|
||||
rem ------------------------------------------------------------------------------
|
||||
if DEFINED _GENERATE_ call:generate
|
||||
if NOT DEFINED _GENERATE_ call:cmakebuild
|
||||
|
||||
cd ..\..\..
|
||||
|
||||
cd "%_BUILDDIR_%"
|
||||
if DEFINED _LOG_ call:log >> "%_LOG_%"
|
||||
call:log
|
||||
GOTO end
|
||||
|
||||
rem -----------------------------------------
|
||||
rem Functions
|
||||
|
||||
rem ----
|
||||
rem normal end
|
||||
:end
|
||||
endlocal
|
||||
exit /b 0
|
||||
|
||||
rem ----
|
||||
rem echo (or don't if --silent). syntax: call:echo args ...
|
||||
:echo
|
||||
if NOT DEFINED _SILENT_ echo %*%
|
||||
exit /b 0
|
||||
|
||||
rem ----
|
||||
rem end with an error syntax: call:error_end
|
||||
:error_end
|
||||
endlocal
|
||||
exit /b 1
|
||||
|
||||
rem ----
|
||||
rem report settings
|
||||
:report
|
||||
cmake.exe > NUL
|
||||
IF NOT ERRORLEVEL 1 cmake.exe --version
|
||||
echo.vs = %_VS_%
|
||||
echo.bit = %_BIT_%
|
||||
echo.sdk = %_SDK_%
|
||||
echo.generator = %_GENERATOR_%
|
||||
echo.zip = %_ZIP_%
|
||||
echo.builddir = %_BUILDDIR_%
|
||||
echo ----------------------------------
|
||||
exit /b 0
|
||||
|
||||
rem ----
|
||||
rem log
|
||||
:log
|
||||
echo VS = %_VS_% BIT = %_BIT_% GENERATE = %_GENERATE_%
|
||||
dir/s XMPCoreStatic.lib
|
||||
echo.-------------------------------------------------
|
||||
exit /b 0
|
||||
|
||||
rem ----
|
||||
rem generate
|
||||
:generate
|
||||
rem Building with the Adobe batch file GenerateXMPToolkitSDK_win.bat
|
||||
rem SDK=2016 demands VS=2015/14.0 (SDK=2014 => VS=2012/11.0) (SDK 2013 => VS=2010/10.0)
|
||||
set _VS_=2015
|
||||
set _VC_=14
|
||||
if /I %_SDK_% == XMP-Toolkit-SDK-CC201412 (
|
||||
set _VS_=2012
|
||||
set _VC_=11
|
||||
)
|
||||
if /I %_SDK_% == XMP-Toolkit-SDK-CC201306 (
|
||||
set _VS_=2010
|
||||
set _VC_=10
|
||||
)
|
||||
|
||||
if /I %_BIT_% == 64 (
|
||||
echo 5|GenerateXMPToolkitSDK_win.bat
|
||||
call "%_BUILDDIR_%\..\contrib\cmake\msvc\vcvars.bat" %_VS_% %_BIT_%
|
||||
devenv vc%_VC_%\static\windows_x64\XMPToolkitSDK64.sln /Build "Release|x64" /ProjectConfig XMPCoreStatic
|
||||
)
|
||||
if /I %_BIT_% == 32 (
|
||||
echo 3|GenerateXMPToolkitSDK_win.bat
|
||||
call "%_BUILDDIR_%\..\contrib\cmake\msvc\vcvars.bat" %_VS_% %_BIT_%
|
||||
devenv vc%_VC_%\static\windows\XMPToolkitSDK.sln /Build "Release|Win32" /ProjectConfig XMPCoreStatic
|
||||
)
|
||||
exit /b 0
|
||||
|
||||
rem ----
|
||||
rem cmakebuild
|
||||
:cmakebuild
|
||||
set "_CL64_=ON"
|
||||
set "_ARCH_=x64"
|
||||
set "_OUT_=%_VS_%/static/windows_x64"
|
||||
set "_BUILD_=Release|x64"
|
||||
set "_SLN_=XMPToolkitSDK64.sln"
|
||||
if /I "%_BIT_%" == "32" (
|
||||
set "_CL64_=OFF"
|
||||
set "_ARCH_==x86"
|
||||
set "_OUT_=%_VS_%/static/windows"
|
||||
set "_BUILD_=Release|Win32"
|
||||
set "_SLN_=XMPToolkitSDK.sln"
|
||||
)
|
||||
|
||||
cmake.exe . "-G%_GENERATOR_%" "-DCMAKE_CL_64=%_CL64_%" "-DCMAKE_ARCH=%_ARCH_%" -DXMP_BUILD_STATIC=ON -DCMAKE_BUILD_TYPE=Release "-DXMP_CMAKEFOLDER_NAME=%_OUT_%"
|
||||
rem cmake.exe . --build
|
||||
call "%_BUILDDIR_%\..\contrib\cmake\msvc\vcvars.bat" %_VS_% %_BIT_%
|
||||
devenv "%_SLN_%" /Build "%_BUILD_%" /ProjectConfig XMPCoreStatic
|
||||
|
||||
exit /b 0
|
||||
|
||||
rem That's all Folks!
|
||||
rem ---
|
||||
|
||||
:-------------------------------------------------------------------------:
|
||||
:Results (XMPCoreStatic.lib in bytes) :
|
||||
:SDK 2016 (100mb) 2014 (19mb) 2013 (16mb) :
|
||||
:BIT 64 32 64 32 64 32 :
|
||||
:--generate 101641740 102822984 19286538 19450862 16460768 16401436 :
|
||||
:--vs 2017 98051466 99325340 21777156 22077510 21742182 22042920 :
|
||||
:--vs 2015 101639620 102822984 22062886 22146768 22029954 22112392 :
|
||||
:--vs 2013 87074304 87437858 19390614 19373912 19358838 19340578 :
|
||||
:--vs 2012 19286538 FAILS 19286538 88888888 FAILS 88888888 :
|
||||
:--vs 2010 FAILS FAILS 16490010 88888888 16460768 88888888 :
|
||||
:--vs 2008 88888888 88888888 88888888 88888888 88888888 88888888 :
|
||||
:--vs 2005 88888888 88888888 88888888 88888888 88888888 88888888 :
|
||||
:-------------------------------------------------------------------------:
|
||||
:88888888 = Not tested
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(EXV_HAVE_STDINT_H) || defined(__MINGW32__) || defined(__MING64__)
|
||||
#if defined(EXV_HAVE_STDINT_H) || defined(__MINGW32__) || defined(__MING64__) || defined(__APPLE__)
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
|
||||
4
xmpsdk/third-party/zlib/zconf.h
vendored
4
xmpsdk/third-party/zlib/zconf.h
vendored
@ -446,6 +446,10 @@ typedef uLong FAR uLongf;
|
||||
# undef _LARGEFILE64_SOURCE
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER) && defined(Z_HAVE_UNISTD_H)
|
||||
#undef Z_HAVE_UNISTD_H
|
||||
#endif
|
||||
|
||||
#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
|
||||
# define Z_HAVE_UNISTD_H
|
||||
#endif
|
||||
|
||||
Loading…
Reference in New Issue
Block a user