[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a
Maximiliano Curia
maxy at moszumanska.debian.org
Thu Jul 13 17:43:07 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=a292d57
The following commit has been merged in the master branch:
commit a292d57fd8aee4e5ab87fce055c916d1d1f3900b
Author: Robin Mills <robin at clanmills.com>
Date: Sun Jun 3 21:51:57 2012 +0000
Feature #536 Modifications to CMake files to support MSVC 32/64 bit builds of Dynamic/Static libraries and applications.
---
CMakeLists.txt | 132 +++++++++++++++++++--------------------
CMake_msvc.txt | 80 ++++++++++++++++++++++++
README-CMAKE | 151 +++++++++++++++++++++++++++++++++++++++-----
TODO-CMAKE | 17 +++++
samples/CMakeLists.txt | 19 +++++-
src/CMakeLists.txt | 165 ++++++++++++++++++++++++++++++++-----------------
src/crwedit.cpp | 2 +-
xmpsdk/CMakeLists.txt | 18 ++++--
8 files changed, 431 insertions(+), 153 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2331c76..506be78 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,8 @@
# CMake build system for exiv2 library and executables
-# Copyright 2008 by Patrick Spendrin <ps_ml at gmx dot de>
-# Copyright 2010-2012 by Gilles Caulier <caulier dot gilles at gmail dot com>
-#
+# Copyright 2012- Robin Mills <robin at clanmills.com>
+# 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.
@@ -23,13 +24,13 @@ SET( GENERIC_LIB_SOVERSION "12" )
# options and their default values
OPTION( EXIV2_ENABLE_SHARED "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" OFF )
+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" OFF )
+OPTION( EXIV2_ENABLE_BUILD_SAMPLES "Build the unit tests" ON )
OPTION( EXIV2_ENABLE_BUILD_PO "Build translations files" OFF )
IF( MINGW OR UNIX )
@@ -44,88 +45,82 @@ IF( MINGW OR UNIX )
ENDIF( MINGW OR UNIX )
if( MSVC )
-
- # add_library("../zlib-1.2.5" SHARED IMPORTED)
-
- #include_directories( "../zlib-1.2.5" "../expat-2.0.1/lib" )
- #set(EXPAT_INCLUDE_DIR "../expat-2.0.1/lib" )
- #set(ZLIB_INCLUDE_DIR "../zlib-1.2.5" )
-
- #set(EXPAT_LIBRARY "../expat-2.0.1")
- #set(ZLIB_LIBRARY "../zlib-1.2.5" )
-
- # target_link_libraries("zlibd.lib")
- # add_subdirectory("../zlib-1.2.5" "../zlib-1.2.5" )
- # set_target_properties(exiv2 PROPERTIES LINK_FLAGS "/LIBPATH:../zlib-1.2.5/$(ConfigurationName)")
- # target_link_libraries(A B)
- # set_property(TARGET PROPERTY LINK_FLAGS "/LIBPATH:../zlib-1.2.5/$(ConfigurationName)")
-
- # cmake CMakeLists.txt -G "Visual Studio 9 2008" (Win64)
- # cm.bat 2008 64 "-DEXIV2_ENABLE_SHARED=OFF" (32/ON) for 4 builds
- # for %p in (Debug,Release) do devenv exiv2.sln /build %p for 2 builds
- set( P_DIR Win32 )
- set( T_DIR Static)
-
- # 64 bit
+ include(CMake_msvc.txt)
+ msvc_runtime_report()
+ msvc_runtime_configure(${EXIV2_ENABLE_SHARED})
+ msvc_runtime_report()
+
+ ##
+ # link dependant libraries
+ # apologies for the duplication of information
+ # I've been unable to simply this using the 'set' command
+ set(EXPAT_LIBRARY "../../expat-2.1.0/$(ConfigurationName)/expat")
+ set(ZLIB_LIBRARY "../../zlib-1.2.7/$(ConfigurationName)/zlib" )
+ include_directories( ../zlib-1.2.7 ../expat-2.1.0/lib)
+ set(EXPAT_INCLUDE_DIR ../expat-2.1.0/lib )
+ set(ZLIB_INCLUDE_DIR ../zlib-1.2.7 )
+
+ if ( EXIV2_ENABLE_SHARED )
+ add_library(expat-2.1.0 SHARED IMPORTED)
+ add_library(zlib-1.2.7 SHARED IMPORTED)
+ endif()
+
+ ##
+ # Set the output directory
+ # x64/Win32
if( CMAKE_SIZEOF_VOID_P MATCHES 8 )
SET( P_DIR x64)
- endif( CMAKE_SIZEOF_VOID_P MATCHES 8 )
+ else()
+ set( P_DIR Win32 )
+ endif()
# DLL/static build
if( EXIV2_ENABLE_SHARED )
set( T_DIR Dynamic )
- endif( EXIV2_ENABLE_SHARED )
+ else()
+ set( T_DIR Static)
+ endif()
set(B_DIR ${PROJECT_BINARY_DIR}/bin/${P_DIR}/${T_DIR})
set(CMAKE_CURRENT_BINARY_DIR ${B_DIR})
set(EXECUTABLE_OUTPUT_PATH ${B_DIR})
set(LIBRARY_OUTPUT_PATH ${B_DIR})
- #if ( EXIV2_ENABLE_XMP )
- # ..\expat\Win32\Debug\libexpat.lib
- # ..\xmpsdk\Win32\Debug\xmpsdk.lib
- # ..\zlib\Win32\Debug\zlib1d.lib
- #endif( EXIV2_ENABLE_XMP )
-
endif( MSVC )
-#IF( MINGW OR UNIX )
- IF( EXIV2_ENABLE_XMP )
- SET( HAVE_XMP_TOOLKIT ON )
- SET( XMPLIB "do" )
- ENDIF( EXIV2_ENABLE_XMP )
-#ENDIF( MINGW OR UNIX )
+IF( EXIV2_ENABLE_XMP )
+ SET( HAVE_XMP_TOOLKIT ON )
+ SET( XMPLIB "do" )
+ENDIF( EXIV2_ENABLE_XMP )
-#IF( MINGW OR UNIX )
- INCLUDE( config/ConfigureChecks.cmake )
-#ENDIF( MINGW OR UNIX )
+INCLUDE( config/ConfigureChecks.cmake )
SET( INSTALL_TARGET_STANDARD_ARGS
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
- )
-
-# add sources from XMPSDK directory - this needs to be done here
-#IF( MINGW OR UNIX )
- SET( XMPSRC ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/ExpatAdapter.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/MD5.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/ParseRDF.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/UnicodeConversions.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPIterator.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPMeta.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPUtils.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XML_Node.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPCore_Impl.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPIterator.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-GetSet.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-Parse.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-Serialize.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPUtils-FileInfo.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPUtils.cpp
- )
-#ENDIF( MINGW OR UNIX )
+)
+
+##
+# add sources from XMPSDK directory
+# this needs to be done here to be visible to xmpsdk, src and sample sub directories
+SET( XMPSRC ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/ExpatAdapter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/MD5.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/ParseRDF.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/UnicodeConversions.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPIterator.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPMeta.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPUtils.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XML_Node.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPCore_Impl.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPIterator.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-GetSet.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-Parse.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-Serialize.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPUtils-FileInfo.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPUtils.cpp
+)
# the following lines need to be added to circumvent the error in xmpsdk\src\MD5.h
IF( ${EXV_HAVE_STDINT_H} )
@@ -143,4 +138,5 @@ IF( EXIV2_ENABLE_BUILD_PO )
ADD_SUBDIRECTORY( po )
ENDIF( EXIV2_ENABLE_BUILD_PO )
-# include(logger.txt)
+# That's all Folks!
+##
diff --git a/CMake_msvc.txt b/CMake_msvc.txt
new file mode 100644
index 0000000..8af2fc0
--- /dev/null
+++ b/CMake_msvc.txt
@@ -0,0 +1,80 @@
+##
+# msvc tuning macros
+macro(msvc_runtime_set_static_ignores bDynamic)
+ if(MSVC)
+ # don't link msvcrt for .exe which use shared libraries (use default libcmt)
+ if ( ${bDynamic} STREQUAL "OFF" )
+ set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/NODEFAULTLIB:MSVCRTD")
+ set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/NODEFAULTLIB:MSVCRT")
+ set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "/NODEFAULTLIB:MSVCRT")
+ set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/NODEFAULTLIB:MSVCRT")
+ endif()
+ endif()
+endmacro()
+
+# http://stackoverflow.com/questions/10113017/setting-the-msvc-runtime-in-cmake
+macro(msvc_runtime_configure bDynamic)
+ if(MSVC)
+ set(variables
+ CMAKE_C_FLAGS_DEBUG
+ CMAKE_C_FLAGS_MINSIZEREL
+ CMAKE_C_FLAGS_RELEASE
+ CMAKE_C_FLAGS_RELWITHDEBINFO
+ CMAKE_CXX_FLAGS_DEBUG
+ CMAKE_CXX_FLAGS_MINSIZEREL
+ CMAKE_CXX_FLAGS_RELEASE
+ CMAKE_CXX_FLAGS_RELWITHDEBINFO
+ )
+ if( ${bDynamic} STREQUAL "ON" )
+ message(STATUS "MSVC -> forcing use of dynamically-linked runtime." )
+ foreach(variable ${variables})
+ if(${variable} MATCHES "/MT")
+ string(REGEX REPLACE "/MT" "/MD" ${variable} "${${variable}}")
+ endif()
+ endforeach()
+ else()
+ message(STATUS "MSVC -> forcing use of statically-linked runtime." )
+ foreach(variable ${variables})
+ if(${variable} MATCHES "/MD")
+ string(REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}")
+ endif()
+ set(${variable} "${${variable}} /DXML_STATIC /D_LIB")
+ endforeach()
+ endif()
+
+ # remove /Ob2 and /Ob1 - they cause linker issues
+ set(obs /Ob2 /Ob1)
+ foreach(ob ${obs})
+ foreach(variable ${variables})
+ if(${variable} MATCHES ${ob} )
+ string(REGEX REPLACE ${ob} "" ${variable} "${${variable}}")
+ endif()
+ endforeach()
+ endforeach()
+ msvc_runtime_set_static_ignores(${bDynamic})
+ endif()
+endmacro()
+
+macro(msvc_runtime_report)
+ if(MSVC)
+ set(variables
+ CMAKE_C_FLAGS_DEBUG
+ CMAKE_C_FLAGS_MINSIZEREL
+ CMAKE_C_FLAGS_RELEASE
+ CMAKE_C_FLAGS_RELWITHDEBINFO
+ CMAKE_CXX_FLAGS_DEBUG
+ CMAKE_CXX_FLAGS_MINSIZEREL
+ CMAKE_CXX_FLAGS_RELEASE
+ CMAKE_CXX_FLAGS_RELWITHDEBINFO
+ # CMAKE_C_LINK_EXECUTABLE
+ )
+ message(STATUS "Build flags:")
+ foreach(variable ${variables})
+ message(STATUS " '${variable}': ${${variable}}")
+ endforeach()
+ message(STATUS "")
+ endif()
+endmacro()
+
+# That's all Folks!
+##
diff --git a/README-CMAKE b/README-CMAKE
index 2e84f37..29fb364 100644
--- a/README-CMAKE
+++ b/README-CMAKE
@@ -1,22 +1,40 @@
-------------------------------------------------------------------------------
NOTE:
-* CMake scripts still under developpement. Use them only if you're prepared
-to fix them. Look TODO-CMAKE.txt for pending task. Thanks for your help.
-
-* The old make and MSVC build files are currently still around but will be
-considered deprecated for 0.20.0 release. They will disappear once
-the cmake build process is feature-complete, stable and documented. Or
-maybe earlier to force me to get there.
+* CMake scripts are "work in progress".
+ Use them only if you're prepared to fix them.
+ See TODO-CMAKE for pending tasks.
+
+* The existing make, msvc and msvc64 build files will continue
+ to be supported by exiv2 until at least v0.25.
+ We will flag them as "deprecated" for at least one release cycle (about 6 months).
+ Our plan is to only support CMake when our scripts are feature-complete, stable and documented.
+
+ All help is appreciated - especially if you are willing to run
+ builds and tests on any platform. Thanks for your help.
+
+Robin Mills
+robin at clanmills.com
+2012-06-01
-------------------------------------------------------------------------------
Exiv2 uses cmake, a cross-platform build system, to control the
-compilation process using simple platform and compiler independent
+compilation process using platform/compiler independent
configuration files.
-Cmake resources
-===============
+TABLE OF CONTENTS
+-----------------
+
+1 CMake resources
+2 Building and Installing for Unix type systems
+3 Building and Installing for DevStudio Users
+4 Building and Installing for other users (Xcode, Eclipse, Qt)
+
+1 CMake resources
+=================
+
+You have to install cmake on your target system.
Home: http://www.cmake.org/
Help: http://www.cmake.org/cmake/help/help.html
@@ -24,9 +42,10 @@ Doc: http://www.cmake.org/cmake/help/documentation.html
Wiki: http://www.cmake.org/Wiki/CMake
FAQ: http://www.cmake.org/Wiki/CMake_FAQ
+2 Building and Installing on Linux
+==================================
-Building and Installing
-=======================
+This process also covers MacOS-X Terminal, Cygwin and MinGW users.
a) From the command line
@@ -57,7 +76,7 @@ Specific Exiv2 options :
-DEXIV2_ENABLE_SHARED : Build exiv2 as a shared library (dll). [default=on ]
-DEXIV2_ENABLE_XMP : Build with XMP metadata support. [default=on ]
--DEXIV2_ENABLE_LIBXMP : Build a static convenience Library for XMP. [default=off]
+-DEXIV2_ENABLE_LIBXMP : Build a static convenience Library for XMP. [default=on ]
-DEXIV2_ENABLE_PNG : Build with png support (requires libz). [default=on ]
-DEXIV2_ENABLE_NLS : Build native language support (requires gettext). [default=on ]
-DEXIV2_ENABLE_PRINTUCS2 : Build with Printucs2. [default=on ]
@@ -80,7 +99,105 @@ b) Using the cmake GUI
ccmake
-Dependencies
-============
-
-cmake itself
+3 Building and installing for DevStudio Users
+=============================================
+
+exiv2 provides three build environment for users of DevStudio:
+
+msvc: 32 bit build environment for MSVC 2003 (and 2005 and 2008)
+msvc64: 32 bit AND 64 bit build environment for MSVC 2005 (and 2008 and 2010)
+cmake: This environment
+
+CMake doesn't build code. It generates build environments.
+CMake is a language for describing builds and the language interpreter generates
+the build environment for your system.
+
+CMake generates MSVC .sln and .vcproj files for your target environment.
+The files generated by CMake provide 4 configs: Debug|Release|RelWithDebInfo|MinSizeRel
+The current architecture of CMake requires you to decide before running cmake about:
+1) The version of DevStudio
+2) 32bit or 64 bit builds
+3) Building static or shared libraries
+
+Code FileSystem Layout
+----------------------
+
+I set up my environment as follows:
+ Directory of C:\gnu.cmake
+
+2012-05-31 09:49 <DIR> exiv2 Vanilla
+2012-05-31 09:45 <DIR> expat-2.1.0 source
+2012-05-30 16:22 <DIR> zlib-1.2.7 trees
+
+Other versions of expat and zlib make be used (although I've never tested them)
+2012-05-19 21:29 <DIR> expat-2.0.1
+2012-05-19 21:29 <DIR> zlib-1.2.3
+2012-05-19 21:29 <DIR> zlib-1.2.5
+
+The command to run cmake is of the form:
+cmake CMakeLists.txt -G "Visual Studio 9 2008 Win64"
+
+There are many options for the cmake command, and many generators. I've added a little
+batch file cm.bat for my convenience.
+c:\> cm 2008 64 == cmake CMakeLists.txt -G "Visual Studio 9 2008 Win64"
+
+Building with cmake involves 3 steps (build zlib/expat, build exiv2, test):
+
+1) Building the support libraries expat and zlib (with cmake)
+ cd expat-2.1.0
+ Edit CMakeLists.txt to specify shared or static library
+ If you wish to use static libries, you'll need the following patch (around line 23)
+ See "Note about expat-2.1.0/CMakeLists.txt"
+
+ --- extract from CMakeLists.txt ---
+ option(XML_NS "Define to make XML Namespaces functionality available" ON)
+
+ # rmills patch begin
+ include(../exiv2/CMake_msvc.txt)
+ msvc_runtime_configure(${BUILD_shared})
+ # rmills patch end
+
+ if(XML_DTD)
+ --- extract end ---
+
+ cmake CMakeLists.txt -G "Visual Studio 9 2008 Win64"
+ .... rattle roll ....
+ Open expat.sln and build all.
+
+ Similar process for zlib-1.2.7
+ You will not need to edit CMakeLists.txt (zlib builds shared and dynamic libraries)
+ cmake CMakeLists.txt -G "Visual Studio 9 2008 Win64"
+ .... rattle roll ....
+ Open zlib.sln and build all.
+
+2) Building exiv2
+ cd exiv2
+ Edit CMakeLists.txt to specify shared or static library (and other options)
+ You may need to change the path specifications to expat and zlib to match your setup
+
+ You will find path references in the three files:
+ CMakeLists.txt ./src/CMakeLists.txt and ./samples/CMakeLists.txt
+
+ cmake CMakeLists.txt -G "Visual Studio 9 2008 Win64"
+ .... rattle roll ....
+ Open exiv2.sln and build all.
+
+3) Location of built files (exiv2.exe, exiv2.dll etc)
+ exiv2in\{ x64 | Win32 }\{ Dynamic|Static }\{Config}\exiv2.exe etc....
+ Config: Debug | MinSizeRel | Release | RelWithDebInfo
+
+Note about expat-2.1.0/CMakeLists.txt
+-------------------------------------
+ expat-2.1.0/CMakeLists.txt can build static or dynamic libraries.
+ However expat's CMakeLists.txt links with MSVCRTx.dll for both static and dynamic.
+ I've taken a decision to either link "All static" or "All dynamic" with no mixing.
+ This patch enforces my design and avoids linker headaches.
+
+
+4 Building and Installing for other users (Xcode, Eclipse, Qt)
+==============================================================
+
+To be written
+
+# That's all Folks
+##
diff --git a/TODO-CMAKE b/TODO-CMAKE
index 379497e..79fe9a3 100644
--- a/TODO-CMAKE
+++ b/TODO-CMAKE
@@ -1,3 +1,20 @@
+My current list
+
+ToDo: * 2005/32/debug won't run "SideBySide" error (manifest trouble)
+ * try again to simplify path definitions for expat and zlib
+ * add the header files in MSVC
+ * write FindLibexiv2.cmake
+ * Test Cygwin, MinGW, Xcode and more versions of MSVC
+
+Done: * Builds and passes the test suite on 2005/32, 2008/64, Mac-Lion/64/Makefiles and Ubuntu/12.04/32bit
+ * Updated documentation (README-CMAKE)
+
+Robin Mills
+robin at clanmills.com
+2012-06-03
+
+Inherited from Gilles Caulier <caulier dot gilles at gmail dot com>:
+
* Review how samples are built: They should use the *installed* version
of libexiv2, not some temporary version in the src or build tree.
diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt
index cf5a51d..4fb0c31 100644
--- a/samples/CMakeLists.txt
+++ b/samples/CMakeLists.txt
@@ -1,10 +1,20 @@
# CMake build system for exiv2 library and executables
-# Copyright 2008 by Patrick Spendrin <ps_ml at gmx.de>
-# Copyright 2010-2012 by Gilles Caulier <caulier dot gilles at gmail dot com>
-#
+# Copyright 2012- Robin Mills <robin at clanmills.com>
+# Copyright 2010-2012 Gilles Caulier <caulier dot gilles at gmail dot com>
+# Copyright 2008 Patrick Spendrin <ps_ml at gmx.de>
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+if (MSVC)
+ include(../CMake_msvc.txt)
+ msvc_runtime_configure(${EXIV2_ENABLE_SHARED})
+ include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../msvc64/include )
+
+ if ( NOT EXIV2_ENABLE_SHARED )
+ link_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../zlib-1.2.7/$(ConfigurationName))
+ endif()
+endif()
+
SET( SAMPLES addmoddel.cpp
convert-test.cpp
easyaccess-test.cpp
@@ -35,3 +45,6 @@ FOREACH(entry ${SAMPLES})
ADD_TEST( ${target}_test ${target} )
TARGET_LINK_LIBRARIES( ${target} exiv2 )
ENDFOREACH(entry ${SAMPLES})
+
+# That's all Folks!
+##
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ad4d0aa..9a6ebf3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,7 +1,8 @@
# CMake build system for exiv2 library and executables
-# Copyright 2008 by Patrick Spendrin <ps_ml at gmx.de>
-# Copyright 2010-2012 by Gilles Caulier <caulier dot gilles at gmail dot com>
-#
+# Copyright 2012- Robin Mills <robin at clanmills.com>
+# Copyright 2010-2012 Gilles Caulier <caulier dot gilles at gmail dot com>
+# Copyright 2008 Patrick Spendrin <ps_ml at gmx.de>
+
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
@@ -117,20 +118,8 @@ SET( LIBEXIV2_SRC basicio.cpp
xmpsidecar.cpp
)
-# Add source files of simple applications to this list
-SET( TAGLIST_SRC taglist.cpp )
-
-# Source files for the Exiv2 application
-SET( EXIV2_SRC exiv2.cpp
- actions.cpp
- utils.cpp
- )
-
-# Source files for the metacopy sample application
-SET( MC_SRC metacopy.cpp
- utils.cpp
- )
-
+##
+# add png*.cpp files if PNG support requested
IF( EXIV2_ENABLE_PNG )
IF( ZLIB_FOUND )
SET( LIBEXIV2_SRC ${LIBEXIV2_SRC}
@@ -141,84 +130,144 @@ IF( EXIV2_ENABLE_PNG )
ENDIF( ZLIB_FOUND )
ENDIF( EXIV2_ENABLE_PNG )
+##
+# add xmp source if xmp is requested and xmp library not built
+IF( EXIV2_ENABLE_XMP )
+ IF( NOT EXIV2_ENABLE_LIBXMP )
+ SET( LIBEXIV2_SRC ${XMPSRC} ${LIBEXIV2_SRC} )
+ ENDIF( NOT EXIV2_ENABLE_LIBXMP )
+ENDIF( EXIV2_ENABLE_XMP )
+
+##
+# Create source file lists for applications
+# exiv2 application
+SET( EXIV2_SRC exiv2.cpp
+ actions.cpp
+ utils.cpp
+)
+
+# taglist sample application
+SET( TAGLIST_SRC taglist.cpp )
+
+
+# metacopy sample application
+SET( MC_SRC metacopy.cpp
+ utils.cpp
+)
+
+# pathtest sample application
+SET( PATHTEST_SRC path-test.cpp
+ utils.cpp
+)
+
+##
+# modify source lists to suit environment
IF(NOT HAVE_TIMEGM )
SET( LIBEXIV2_SRC ${LIBEXIV2_SRC} localtime.c )
- SET( EXIV2_SRC ${EXIV2_SRC} localtime.c )
+ SET( EXIV2_SRC ${EXIV2_SRC} localtime.c )
+ SET( PATHTEST_SRC ${PATHTEST_SRC} localtime.c )
ENDIF( NOT HAVE_TIMEGM )
IF( MSVC )
- SET( MC_SRC ${MC_SRC} getopt_win32.c )
- SET( EXIV2_SRC ${EXIV2_SRC} getopt_win32.c )
+ SET( MC_SRC ${MC_SRC} getopt_win32.c )
+ SET( EXIV2_SRC ${EXIV2_SRC} getopt_win32.c )
SET( LIBEXIV2_SRC ${LIBEXIV2_SRC} getopt_win32.c )
+ SET( PATHTEST_SRC ${PATHTEST_SRC} getopt_win32.c )
ENDIF( MSVC )
-IF( EXIV2_ENABLE_XMP )
- IF( NOT EXIV2_ENABLE_LIBXMP )
- SET( LIBEXIV2_SRC ${XMPSRC} ${LIBEXIV2_SRC} )
- ENDIF( NOT EXIV2_ENABLE_LIBXMP )
-ENDIF( EXIV2_ENABLE_XMP )
+##
+# msvn tuning
+include(../CMake_msvc.txt)
+msvc_runtime_configure(${EXIV2_ENABLE_SHARED})
# ******************************************************************************
-# Library
+# exiv2 library
ADD_LIBRARY( exiv2 ${STATIC_FLAG} ${LIBEXIV2_SRC} )
+SET_TARGET_PROPERTIES( exiv2 PROPERTIES
+ VERSION ${GENERIC_LIB_VERSION}
+ SOVERSION ${GENERIC_LIB_SOVERSION}
+ DEFINE_SYMBOL EXV_BUILDING_LIB
+)
+TARGET_LINK_LIBRARIES( exiv2 ${EXPAT_LIBRARIES} )
-SET_TARGET_PROPERTIES( exiv2 PROPERTIES VERSION ${GENERIC_LIB_VERSION}
- SOVERSION ${GENERIC_LIB_SOVERSION}
- DEFINE_SYMBOL EXV_BUILDING_LIB
- )
+if( EXIV2_ENABLE_LIBXMP )
+ ADD_DEPENDENCIES( exiv2 xmp )
+ LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH}/$(ConfigurationName))
+ TARGET_LINK_LIBRARIES( exiv2 xmp )
+ENDIF()
-TARGET_LINK_LIBRARIES( exiv2 ${EXPAT_LIBRARIES} )
+IF( EXIV2_ENABLE_PNG )
+ IF( ZLIB_FOUND )
+ IF( MSVC )
+ if ( EXIV2_ENABLE_SHARED )
+ TARGET_LINK_LIBRARIES( exiv2 optimized ${ZLIB_LIBRARIES} debug ${ZLIB_LIBRARIES}d )
+ else()
+ link_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../zlib-1.2.7/$(ConfigurationName))
+ TARGET_LINK_LIBRARIES( exiv2 optimized zlibstatic.lib debug zlibstaticd.lib )
+ endif()
+ ELSE()
+ TARGET_LINK_LIBRARIES( exiv2 ${ZLIB_LIBRARIES} )
+ ENDIF()
+ ENDIF()
+ENDIF()
-# IF( MINGW OR UNIX )
- if( EXIV2_ENABLE_LIBXMP )
- TARGET_LINK_LIBRARIES( exiv2 ${XMPLIB} )
- ENDIF( EXIV2_ENABLE_LIBXMP )
-
- IF( EXIV2_ENABLE_PNG )
- IF( ZLIB_FOUND )
-# IF ( MINGW OR UNIX )
- TARGET_LINK_LIBRARIES( exiv2 ${ZLIB_LIBRARIES} )
-# ELSE ( MINGW OR UNIX )
-# TARGET_LINK_LIBRARIES( exiv2 zlibd )
-# ENDIF( MINGW OR UNIX )
- ENDIF( ZLIB_FOUND )
- ENDIF( EXIV2_ENABLE_PNG )
-
- IF( EXIV2_ENABLE_NLS )
- TARGET_LINK_LIBRARIES( exiv2 ${LIBINTL_LIBRARIES} )
- ENDIF( EXIV2_ENABLE_NLS )
-
- IF( ICONV_FOUND )
- TARGET_LINK_LIBRARIES( exiv2 ${ICONV_LIBRARIES} )
- ENDIF( ICONV_FOUND )
-# ENDIF( MINGW OR UNIX )
+IF( EXIV2_ENABLE_NLS )
+ TARGET_LINK_LIBRARIES( exiv2 ${LIBINTL_LIBRARIES} )
+ENDIF( EXIV2_ENABLE_NLS )
+IF( ICONV_FOUND )
+ TARGET_LINK_LIBRARIES( exiv2 ${ICONV_LIBRARIES} )
+ENDIF( ICONV_FOUND )
+
+##
+# copy zlib and expat dlls to output directory if necessary
+IF ( MSVC AND EXIV2_ENABLE_SHARED )
+ ADD_CUSTOM_COMMAND(
+ TARGET exiv2
+ POST_BUILD
+ COMMAND copy /y $(SolutionDir)\..\expat-2.1.0\$(ConfigurationName)\*.dll $(SolutionDir)\bin\${P_DIR}\${T_DIR}\$(ConfigurationName)
+ )
+ ADD_CUSTOM_COMMAND(
+ TARGET exiv2
+ POST_BUILD
+ COMMAND copy /y $(SolutionDir)\..\zlib-1.2.7\$(ConfigurationName)\*.dll $(SolutionDir)\bin\${P_DIR}\${T_DIR}\$(ConfigurationName)
+ )
+ENDIF()
INSTALL( TARGETS exiv2 ${INSTALL_TARGET_STANDARD_ARGS} )
# ******************************************************************************
-# Binary
+# exiv2 application
ADD_EXECUTABLE( exiv2bin ${EXIV2_SRC} )
SET_TARGET_PROPERTIES( exiv2bin PROPERTIES OUTPUT_NAME exiv2 )
TARGET_LINK_LIBRARIES( exiv2bin exiv2 )
INSTALL( TARGETS exiv2bin ${INSTALL_TARGET_STANDARD_ARGS} )
# ******************************************************************************
-# Binary
+# metacopy sample application
ADD_EXECUTABLE( metacopy ${MC_SRC} )
TARGET_LINK_LIBRARIES( metacopy exiv2 )
INSTALL( TARGETS metacopy ${INSTALL_TARGET_STANDARD_ARGS} )
-
# ******************************************************************************
-# Binary
+# taglist sample application
ADD_EXECUTABLE( taglist ${TAGLIST_SRC} )
TARGET_LINK_LIBRARIES( taglist exiv2 )
INSTALL( TARGETS taglist ${INSTALL_TARGET_STANDARD_ARGS} )
# ******************************************************************************
+# path-test sample application
+ADD_EXECUTABLE( pathtest ${PATHTEST_SRC} )
+SET_TARGET_PROPERTIES( pathtest PROPERTIES OUTPUT_NAME path-test )
+TARGET_LINK_LIBRARIES( pathtest exiv2 )
+INSTALL( TARGETS pathtest ${INSTALL_TARGET_STANDARD_ARGS} )
+
+# ******************************************************************************
# Headers
INSTALL( FILES ${LIBEXIV2_HDR} DESTINATION include/exiv2 )
# ******************************************************************************
# Man page
INSTALL( FILES exiv2.1 DESTINATION man/man1 )
+
+# That's all Folks!
+##
diff --git a/src/crwedit.cpp b/src/crwedit.cpp
index 3f785bf..a58d618 100644
--- a/src/crwedit.cpp
+++ b/src/crwedit.cpp
@@ -79,7 +79,7 @@ void write(const std::string& filename, const Exiv2::Internal::CiffHeader* pHead
throw Exiv2::Error(9, io.path(), Exiv2::strError());
}
Exiv2::IoCloser closer(io);
- long ret = io.write(&blob[0], blob.size());
+ long ret = io.write(&blob[0], (long) blob.size());
if (static_cast<size_t>(ret) != blob.size()) throw Exiv2::Error(21);
io.close();
}
diff --git a/xmpsdk/CMakeLists.txt b/xmpsdk/CMakeLists.txt
index ef4c130..30526ef 100644
--- a/xmpsdk/CMakeLists.txt
+++ b/xmpsdk/CMakeLists.txt
@@ -1,14 +1,20 @@
# CMake build system for exiv2 library and executables
-# Copyright 2008 by Patrick Spendrin <ps_ml at gmx dot de>
-# Copyright 2010-2012 by Gilles Caulier <caulier dot gilles at gmail dot com>
-#
+# Copyright 2012- Robin Mills <robin at clanmills.com>
+# 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.
+include(../CMake_msvc.txt)
+msvc_runtime_configure(${EXIV2_ENABLE_SHARED})
+
IF( EXIV2_ENABLE_XMP AND EXIV2_ENABLE_LIBXMP )
ADD_LIBRARY( xmp STATIC ${XMPSRC} )
GET_TARGET_PROPERTY( XMPLIB xmp LOCATION )
- SET( XMPLIB ${XMPLIB} PARENT_SCOPE )
-
- INSTALL(TARGETS xmp ${INSTALL_TARGET_STANDARD_ARGS} )
+ # SET( XMPLIB ${XMPLIB} PARENT_SCOPE )
+ # INSTALL(TARGETS xmp ${INSTALL_TARGET_STANDARD_ARGS} )
ENDIF( EXIV2_ENABLE_XMP AND EXIV2_ENABLE_LIBXMP )
+
+# That's all Folks!
+##
--
exiv2 packaging
More information about the pkg-kde-commits
mailing list