|
|
@ -5,26 +5,8 @@ T A B L E o f C O N T E N T S
|
|
|
|
1.1 Amazing Discovery 1 DumpFile is linked to libstdc++.6.dylib
|
|
|
|
1.1 Amazing Discovery 1 DumpFile is linked to libstdc++.6.dylib
|
|
|
|
1.2 Amazing Discovery 2 Millions of "weak symbol/visibility" messages
|
|
|
|
1.2 Amazing Discovery 2 Millions of "weak symbol/visibility" messages
|
|
|
|
|
|
|
|
|
|
|
|
2 Puzzle with autotools/--with-adobe MacOS-X Only
|
|
|
|
|
|
|
|
2.1 To build without the external Adobe SDK:
|
|
|
|
|
|
|
|
2.2 To add the external Adobe SDK to the mix:
|
|
|
|
|
|
|
|
2.3 Notes (mostly to remind me of painful discoveries)
|
|
|
|
|
|
|
|
2.4 Compiler options used to build Adobe XMPsdk
|
|
|
|
|
|
|
|
2.5 Compiler options used to build DumpFile sample Application
|
|
|
|
|
|
|
|
2.6 Linker Options used to link DumpFile
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 Features to Add to the CMake code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 Build design for v0.26.1
|
|
|
|
4 Build design for v0.26.1
|
|
|
|
4.1 Backwards compatibility
|
|
|
|
|
|
|
|
4.2 New Options for ./configure
|
|
|
|
|
|
|
|
4.3 New Options for msvc
|
|
|
|
|
|
|
|
4.4 New Options for CMake
|
|
|
|
|
|
|
|
4.5 New Options for contrib/cmake/msvc
|
|
|
|
|
|
|
|
4.6 Scripts xmpsdk/buildXMPsdk.sh and xmpsdk/buildXMPsdk.cmd
|
|
|
|
|
|
|
|
4.7 Support for 32/64 bit builds, Release/Debug, Shared/Static
|
|
|
|
|
|
|
|
4.8 Support for MinGW
|
|
|
|
4.8 Support for MinGW
|
|
|
|
4.9 Linking XMPsdk with libexiv2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 Refactoring the Tiff Code
|
|
|
|
5 Refactoring the Tiff Code
|
|
|
|
5.1 Background
|
|
|
|
5.1 Background
|
|
|
@ -38,368 +20,6 @@ T A B L E o f C O N T E N T S
|
|
|
|
|
|
|
|
|
|
|
|
==========================================================================
|
|
|
|
==========================================================================
|
|
|
|
|
|
|
|
|
|
|
|
1 Building XMPsdk and Samples in Terminal with the ./Generate_XXX_mac.sh scripts
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Added : 2017-08-18
|
|
|
|
|
|
|
|
Modified: 2017-08-18
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ cd <exiv2dir>/xmpsdk
|
|
|
|
|
|
|
|
# XMP-Toolkit-SDK-CC201607 or XMP-Toolkit-SDK-CC201407
|
|
|
|
|
|
|
|
$ mkdir Adobe
|
|
|
|
|
|
|
|
$ curl -O http://download.macromedia.com/pub/developer/xmp/sdk/XMP-Toolkit-SDK-CC201607.zip
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ find third-party -type d -maxdepth 1 -exec cp -R '{}' Adobe/XMP-Toolkit-SDK-CC201607/third-party ';'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ cd XMP-Toolkit-SDK-CC201607/build
|
|
|
|
|
|
|
|
$ echo '3' | ./GenerateXMPToolkitSDK_mac.sh
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ xcodebuild -project xcode/static/intel_64/XMPToolkitSDK64.xcodeproj/ -target XMPCoreStatic -configuration Release
|
|
|
|
|
|
|
|
$ xcodebuild -project xcode/static/intel_64/XMPToolkitSDK64.xcodeproj/ -target XMPFilesStatic -configuration Release
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Building Samples:
|
|
|
|
|
|
|
|
$ cd Adobe
|
|
|
|
|
|
|
|
$ curl --insecure -O https://cmake.org/files/v3.5/cmake-3.5.2-Darwin-x86_64.tar.gz
|
|
|
|
|
|
|
|
$ tar xzf cmake-3.5.2-Darwin-x86_64.tar.gz
|
|
|
|
|
|
|
|
$ mkdir XMP-Toolkit-SDK-CC201607/tools/cmake/bin
|
|
|
|
|
|
|
|
$ ditto cmake-3.5.2-Darwin-x86_64/CMake.app/ XMP-Toolkit-SDK-CC201607/tools/cmake/bin/cmake.app
|
|
|
|
|
|
|
|
$ cd XMP-Toolkit-SDK-CC201607/samples/build
|
|
|
|
|
|
|
|
$ echo '2' | ./GenerateSamples_mac.sh
|
|
|
|
|
|
|
|
$ xcodebuild -project xcode/intel_64/XMP_Samples_64.xcodeproj -configuration Release [-target Sample]
|
|
|
|
|
|
|
|
$ cd XMP-Toolkit-SDK-CC201607
|
|
|
|
|
|
|
|
$ samples/target/macintosh/intel_64/Release/DumpFile ~/Stonehenge.jpg
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Samples:
|
|
|
|
|
|
|
|
CustomSchema
|
|
|
|
|
|
|
|
CustomSchemaNewDOM
|
|
|
|
|
|
|
|
DumpFile
|
|
|
|
|
|
|
|
DumpMainXMP
|
|
|
|
|
|
|
|
DumpScannedXMP
|
|
|
|
|
|
|
|
ModifyingXMP
|
|
|
|
|
|
|
|
ModifyingXMPNewDOM
|
|
|
|
|
|
|
|
ReadingXMP
|
|
|
|
|
|
|
|
ReadingXMPNewDOM
|
|
|
|
|
|
|
|
XMPCommand
|
|
|
|
|
|
|
|
XMPCoreCoverage
|
|
|
|
|
|
|
|
XMPFilesCoverage
|
|
|
|
|
|
|
|
XMPIterations
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.1 Amazing Discovery 1 DumpFile is linked to libstdc++.6.dylib
|
|
|
|
|
|
|
|
------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XMP-Toolkit-SDK-CC201607/samples $ otool -L target/macintosh/intel_64/Release/DumpFile
|
|
|
|
|
|
|
|
target/macintosh/intel_64/Release/DumpFile:
|
|
|
|
|
|
|
|
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 22.0.0)
|
|
|
|
|
|
|
|
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 104.1.0)
|
|
|
|
|
|
|
|
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1)
|
|
|
|
|
|
|
|
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 728.4.0)
|
|
|
|
|
|
|
|
XMP-Toolkit-SDK-CC201607/samples $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Conclusion: We should link -lXMPCore with libexiv2.26.dylib
|
|
|
|
|
|
|
|
We should not link -lXMPCore with applications such as exiv2(.exe)
|
|
|
|
|
|
|
|
We should build exiv2 code with visibility disabled "CXXFLAGS=-fvisibility=hidden -fvisibility-inlines-hidden"
|
|
|
|
|
|
|
|
We must compile and link everything with "CXXFLAGS=-stdlib=libstdc++ -Wno-deprecated"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.2 Amazing Discovery 2 Millions of "weak symbol/visibility" messages
|
|
|
|
|
|
|
|
------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ cd samples/build
|
|
|
|
|
|
|
|
$ rm -rf cmake/DumpFile/build_x64 # remove the build of DumpFile
|
|
|
|
|
|
|
|
$ env VERBOSE=1 xcodebuild -project xcode/intel_64/XMP_Samples_64.xcodeproj -configuration Release -target DumpFile
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
==========================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 Puzzle with autotools/--with-adobe MacOS-X Only
|
|
|
|
|
|
|
|
Added : 2017-08-17
|
|
|
|
|
|
|
|
Modified: 2017-08-18
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The --with-adobe code is new (added on Monday/Tuesday 2017-08-15).
|
|
|
|
|
|
|
|
It's very much "Work in Progress" and will get lots more polishing.
|
|
|
|
|
|
|
|
This builds and links on Mac and Linux (Cygwin isn't ready yet).
|
|
|
|
|
|
|
|
Autotools isn't used with Visual Studio
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Default build (which compile/links xmpsdk/src) is fine (and passes test suite)
|
|
|
|
|
|
|
|
$ sudo make distclean ; make config ; ./configure ; make ; sudo make install ; make samples ; make tests
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Status: The 2016/AdobeXMPsdk requires an entry point that's not in the C++ STL library
|
|
|
|
|
|
|
|
./configure is building and passing the test suite
|
|
|
|
|
|
|
|
./configure --with-adobe=2014 is broken on __ZNSs4_Rep11_S_terminalE
|
|
|
|
|
|
|
|
./configure --with-adobe=2016 is broken on __ZNSiD0Ev
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The missing entry points are in /usr/lib/libstdc++.6.dylib
|
|
|
|
|
|
|
|
When I use install_name_tool to change to libstdc++.6.dylib, I crash in this:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ c++filt __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev
|
|
|
|
|
|
|
|
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
|
|
|
|
|
|
|
|
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
There's something mixed up concerning the libraries used by Adobe's XMPSDK and libexiv2.26.dylib
|
|
|
|
|
|
|
|
-stdlib=libstdc++ will link /usr/lib/libstdc++.6.dylib, however the compiler warns:
|
|
|
|
|
|
|
|
clang: warning: libstdc++ is deprecated; move to libc++ [-Wdeprecated]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.1 To build without the external Adobe SDK:
|
|
|
|
|
|
|
|
--------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Edit config/config.mk.in and modify:
|
|
|
|
|
|
|
|
XMPSDK_LIBS= -lXMPCore
|
|
|
|
|
|
|
|
to
|
|
|
|
|
|
|
|
XMPSDK_LIBS = ''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ sudo make distclean ; make config ; ./configure --with-adobe ; make
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The following command works:
|
|
|
|
|
|
|
|
$ bin/exiv2 http://clanmills.com/Stonehenge.jpg is working
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
On 2017-08-15 The following command crashes when it attempts to execute XMPsdk code
|
|
|
|
|
|
|
|
$ bin/exiv2 --verbose --version
|
|
|
|
|
|
|
|
........
|
|
|
|
|
|
|
|
config_path=/Users/rmills/.exiv2
|
|
|
|
|
|
|
|
uid=501
|
|
|
|
|
|
|
|
euid=501
|
|
|
|
|
|
|
|
gid=20
|
|
|
|
|
|
|
|
dyld: lazy symbol binding failed: Symbol not found: _WXMPMeta_Initialize_1
|
|
|
|
|
|
|
|
Referenced from: /Users/rmills/gnu/github/exiv2/src/.libs/libexiv2.26.dylib
|
|
|
|
|
|
|
|
Expected in: flat namespace
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dyld: Symbol not found: _WXMPMeta_Initialize_1
|
|
|
|
|
|
|
|
Referenced from: /Users/rmills/gnu/github/exiv2/src/.libs/libexiv2.26.dylib
|
|
|
|
|
|
|
|
Expected in: flat namespace
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Abort trap: 6
|
|
|
|
|
|
|
|
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This is correct. libXMPCore.a is not in the mix.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ls -alt src/.libs/libexiv2.26.dylib
|
|
|
|
|
|
|
|
-rwxr-xr-x+ 1 rmills staff 2238124 Aug 17 11:07 src/.libs/libexiv2.26.dylib
|
|
|
|
|
|
|
|
-------
|
|
|
|
|
|
|
|
2.2 To add the external Adobe SDK to the mix:
|
|
|
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Edit src/Makefile#242 and change:
|
|
|
|
|
|
|
|
@$(LIBTOOL) --mode=link $(LINK.cc) -o ../bin/$@ $(LIBRARY) $(EXIV2OBJ) $(EXIV2COBJ) -rpath $(libdir)
|
|
|
|
|
|
|
|
to:
|
|
|
|
|
|
|
|
@$(LIBTOOL) --mode=link $(LINK.cc) -lXMPCore -o ../bin/$@ $(LIBRARY) $(EXIV2OBJ) $(EXIV2COBJ) -rpath $(libdir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ touch src/version.cpp src/exiv2.cpp ; make
|
|
|
|
|
|
|
|
$ ls -alt src/.libs/libexiv2.26.dylib
|
|
|
|
|
|
|
|
-rwxr-xr-x+ 1 rmills staff 4312308 Aug 17 11:17 src/.libs/libexiv2.26.dylib
|
|
|
|
|
|
|
|
-------
|
|
|
|
|
|
|
|
$ bin/exiv2
|
|
|
|
|
|
|
|
dyld: Symbol not found: __ZNSiD0Ev
|
|
|
|
|
|
|
|
Referenced from: /Users/rmills/gnu/github/exiv2/src/.libs/libexiv2.26.dylib
|
|
|
|
|
|
|
|
Expected in: flat namespace
|
|
|
|
|
|
|
|
in /Users/rmills/gnu/github/exiv2/src/.libs/libexiv2.26.dylib
|
|
|
|
|
|
|
|
Abort trap: 6
|
|
|
|
|
|
|
|
605 rmills@rmillsmbp:~/gnu/github/exiv2 $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ c++filt _ZNSiD0Ev
|
|
|
|
|
|
|
|
std::basic_istream<char, std::char_traits<char> >::~basic_istream()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This code is being accessed by Adobe XMPSDK 2016 libXMPCore.a and isn't in the c++ library.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ nm -g xmpsdk/Adobe/libXMPCore.a | grep _ZNSiD0Ev
|
|
|
|
|
|
|
|
U __ZNSiD0Ev
|
|
|
|
|
|
|
|
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Adobe XMPSDK 2014 has a similar problem with __ZNSs4_Rep11_S_terminalE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ nm -g Adobe/XMP-Toolkit-SDK-CC201412/libXMPCore.a | grep __ZNSs4_Rep11_S_terminalE | sort --unique
|
|
|
|
|
|
|
|
U __ZNSs4_Rep11_S_terminalE
|
|
|
|
|
|
|
|
$ c++filt __ZNSs4_Rep11_S_terminalE
|
|
|
|
|
|
|
|
std::string::_Rep::_S_terminal
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.3 Notes (mostly to remind me of painful discoveries)
|
|
|
|
|
|
|
|
------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
How does the build get generated?
|
|
|
|
|
|
|
|
$ make config
|
|
|
|
|
|
|
|
This generates ./configure by reading config/configure.ac
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When you use --with-adobe, CXXFLAGS and LDFLAGS are modified and ENABLE_XMP is set to 2016.
|
|
|
|
|
|
|
|
Makefile has code to execute the script xmpsdk/buildXMPsdk.sh which
|
|
|
|
|
|
|
|
downloads and builds the XMPsdk to create libCore.a (which we need) and libFiles.a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
config/config.mk.in is converted into config/config.mk and included in xmpsdk/src/Makefile
|
|
|
|
|
|
|
|
This is really ugly. config.mk also messes with CPPFLAGS and LDFLAGS
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
To get -lXMPCore into the mix, set XMPSDK_LIBS in config/config.mk.in
|
|
|
|
|
|
|
|
XMPSDK_LIBS = -lXMPCore
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
508 rmills@rmillsmbp:~/gnu/github/exiv2 $ finder Makefile | xargs grep -H config.mk | grep include
|
|
|
|
|
|
|
|
./contrib/organize/Makefile:include $(top_srcdir)/config/config.mk
|
|
|
|
|
|
|
|
./doc/Makefile:include $(top_srcdir)/config/config.mk
|
|
|
|
|
|
|
|
./samples/Makefile:include $(top_srcdir)/config/config.mk
|
|
|
|
|
|
|
|
./src/Makefile:include $(top_srcdir)/config/config.mk
|
|
|
|
|
|
|
|
./xmpsdk/src/Makefile:include $(top_srcdir)/config/config.mk
|
|
|
|
|
|
|
|
509 rmills@rmillsmbp:~/gnu/github/exiv2 $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.4 Compiler options used to build Adobe XMPsdk
|
|
|
|
|
|
|
|
-----------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
For sure, Adobe's code is being built with MacOSX10.8.sdk and -std=c++11
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/usr/bin/c++
|
|
|
|
|
|
|
|
-DBUILDING_XMPCORE_AS_STATIC=1
|
|
|
|
|
|
|
|
-DBUILDING_XMPCORE_LIB=1
|
|
|
|
|
|
|
|
-DENABLE_CPP_DOM_MODEL=1
|
|
|
|
|
|
|
|
-DHAVE_EXPAT_CONFIG_H=1
|
|
|
|
|
|
|
|
-DMAC_ENV=1
|
|
|
|
|
|
|
|
-DXML_STATIC=1
|
|
|
|
|
|
|
|
-DXMP_64=1
|
|
|
|
|
|
|
|
-DXMP_COMPONENT_INT_NAMESPACE=AdobeXMPCore_Int
|
|
|
|
|
|
|
|
-DXMP_StaticBuild=1
|
|
|
|
|
|
|
|
-I/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/XMPCore/build/../..
|
|
|
|
|
|
|
|
-I/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/XMPCore/build/../../public/include
|
|
|
|
|
|
|
|
-I/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/XMPCore/build/../../third-party/expat/public/lib
|
|
|
|
|
|
|
|
-I/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/XMPCore/build/../resource/mac
|
|
|
|
|
|
|
|
-funsigned-char
|
|
|
|
|
|
|
|
-fshort-enums
|
|
|
|
|
|
|
|
-fno-common
|
|
|
|
|
|
|
|
-Wall
|
|
|
|
|
|
|
|
-Wextra
|
|
|
|
|
|
|
|
-Wno-missing-field-initializers
|
|
|
|
|
|
|
|
-Wno-shadow
|
|
|
|
|
|
|
|
-Wno-reorder
|
|
|
|
|
|
|
|
-std=c++11
|
|
|
|
|
|
|
|
-Wnon-virtual-dtor
|
|
|
|
|
|
|
|
-Woverloaded-virtual
|
|
|
|
|
|
|
|
-Wno-unused-variable
|
|
|
|
|
|
|
|
-Wno-unused-function
|
|
|
|
|
|
|
|
-Wno-unused-parameter
|
|
|
|
|
|
|
|
-fstack-protector
|
|
|
|
|
|
|
|
-O3
|
|
|
|
|
|
|
|
-DNDEBUG=1
|
|
|
|
|
|
|
|
-D_NDEBUG=1
|
|
|
|
|
|
|
|
-arch x86_64
|
|
|
|
|
|
|
|
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
|
|
|
|
|
|
|
|
-mmacosx-version-min=10.7
|
|
|
|
|
|
|
|
-o CMakeFiles/XMPCoreStatic.dir/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/XMPCore/source/XMPMeta-GetSet.cpp.o
|
|
|
|
|
|
|
|
-c /Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/XMPCore/source/XMPMeta-GetSet.cpp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.5 Compiler options used to build DumpFile sample Application
|
|
|
|
|
|
|
|
-----------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
clang -x c++
|
|
|
|
|
|
|
|
-arch x86_64
|
|
|
|
|
|
|
|
-fmessage-length=0
|
|
|
|
|
|
|
|
-fdiagnostics-show-note-include-stack
|
|
|
|
|
|
|
|
-fmacro-backtrace-limit=0
|
|
|
|
|
|
|
|
-stdlib=libstdc++
|
|
|
|
|
|
|
|
-Wno-trigraphs
|
|
|
|
|
|
|
|
-fpascal-strings
|
|
|
|
|
|
|
|
-O3
|
|
|
|
|
|
|
|
-Wno-missing-field-initializers
|
|
|
|
|
|
|
|
-Wno-missing-prototypes
|
|
|
|
|
|
|
|
-Wno-return-type
|
|
|
|
|
|
|
|
-Wno-non-virtual-dtor
|
|
|
|
|
|
|
|
-Wno-overloaded-virtual
|
|
|
|
|
|
|
|
-Wno-exit-time-destructors
|
|
|
|
|
|
|
|
-Wno-missing-braces
|
|
|
|
|
|
|
|
-Wparentheses
|
|
|
|
|
|
|
|
-Wswitch
|
|
|
|
|
|
|
|
-Wno-unused-function
|
|
|
|
|
|
|
|
-Wno-unused-label
|
|
|
|
|
|
|
|
-Wno-unused-parameter
|
|
|
|
|
|
|
|
-Wno-unused-variable
|
|
|
|
|
|
|
|
-Wunused-value
|
|
|
|
|
|
|
|
-Wno-empty-body
|
|
|
|
|
|
|
|
-Wno-uninitialized
|
|
|
|
|
|
|
|
-Wno-unknown-pragmas
|
|
|
|
|
|
|
|
-Wno-shadow
|
|
|
|
|
|
|
|
-Wno-four-char-constants
|
|
|
|
|
|
|
|
-Wno-conversion
|
|
|
|
|
|
|
|
-Wno-constant-conversion
|
|
|
|
|
|
|
|
-Wno-int-conversion
|
|
|
|
|
|
|
|
-Wno-bool-conversion
|
|
|
|
|
|
|
|
-Wno-enum-conversion
|
|
|
|
|
|
|
|
-Wno-shorten-64-to-32
|
|
|
|
|
|
|
|
-Wno-newline-eof
|
|
|
|
|
|
|
|
-Wno-c++11-extensions
|
|
|
|
|
|
|
|
-DCMAKE_INTDIR=\"Release\"
|
|
|
|
|
|
|
|
-DMAC_ENV=1
|
|
|
|
|
|
|
|
-DXMP_64=1
|
|
|
|
|
|
|
|
-DXMP_StaticBuild=1
|
|
|
|
|
|
|
|
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
|
|
|
|
|
|
|
|
-fasm-blocks
|
|
|
|
|
|
|
|
-fstrict-aliasing
|
|
|
|
|
|
|
|
-Wdeprecated-declarations
|
|
|
|
|
|
|
|
-Winvalid-offsetof
|
|
|
|
|
|
|
|
-mmacosx-version-min=10.9
|
|
|
|
|
|
|
|
-g
|
|
|
|
|
|
|
|
-Wno-sign-conversion
|
|
|
|
|
|
|
|
-Wno-infinite-recursion
|
|
|
|
|
|
|
|
-Wno-move
|
|
|
|
|
|
|
|
-I/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/target/macintosh/intel_64/Release/include
|
|
|
|
|
|
|
|
-I/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/../../..
|
|
|
|
|
|
|
|
-I/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/../../../public/include
|
|
|
|
|
|
|
|
-I/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/DumpFile/build_x64/XMP_Samples_64.build/Release/DumpFile.build/DerivedSources/x86_64
|
|
|
|
|
|
|
|
-I/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/DumpFile/build_x64/XMP_Samples_64.build/Release/DumpFile.build/DerivedSources
|
|
|
|
|
|
|
|
-Wmost
|
|
|
|
|
|
|
|
-Wno-four-char-constants
|
|
|
|
|
|
|
|
-Wno-unknown-pragmas
|
|
|
|
|
|
|
|
-F/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/target/macintosh/intel_64/Release
|
|
|
|
|
|
|
|
-F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks
|
|
|
|
|
|
|
|
-funsigned-char
|
|
|
|
|
|
|
|
-fshort-enums
|
|
|
|
|
|
|
|
-fno-common
|
|
|
|
|
|
|
|
-Wall
|
|
|
|
|
|
|
|
-Wextra
|
|
|
|
|
|
|
|
-Wno-missing-field-initializers
|
|
|
|
|
|
|
|
-Wno-shadow
|
|
|
|
|
|
|
|
-Wno-reorder
|
|
|
|
|
|
|
|
-std=c++11
|
|
|
|
|
|
|
|
-Wnon-virtual-dtor
|
|
|
|
|
|
|
|
-Woverloaded-virtual
|
|
|
|
|
|
|
|
-Wno-unused-variable
|
|
|
|
|
|
|
|
-Wno-unused-function
|
|
|
|
|
|
|
|
-Wno-unused-parameter
|
|
|
|
|
|
|
|
-fstack-protector
|
|
|
|
|
|
|
|
-DNDEBUG=1
|
|
|
|
|
|
|
|
-D_NDEBUG=1
|
|
|
|
|
|
|
|
-MMD
|
|
|
|
|
|
|
|
-MT dependencies
|
|
|
|
|
|
|
|
-MF /Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/DumpFile/build_x64/XMP_Samples_64.build/Release/DumpFile.build/Objects-normal/x86_64/DumpFile.d
|
|
|
|
|
|
|
|
--serialize-diagnostics /Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/DumpFile/build_x64/XMP_Samples_64.build/Release/DumpFile.build/Objects-normal/x86_64/DumpFile.dia
|
|
|
|
|
|
|
|
-c /Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/source/common/DumpFile.cpp
|
|
|
|
|
|
|
|
-o /Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/DumpFile/build_x64/XMP_Samples_64.build/Release/DumpFile.build/Objects-normal/x86_64/DumpFile.o
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.6 Linker Options used to link DumpFile
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
|
|
|
|
|
|
|
|
-arch x86_64
|
|
|
|
|
|
|
|
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
|
|
|
|
|
|
|
|
-L/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/target/macintosh/intel_64/Release
|
|
|
|
|
|
|
|
-F/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/target/macintosh/intel_64/Release
|
|
|
|
|
|
|
|
-F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks
|
|
|
|
|
|
|
|
-filelist /Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/DumpFile/build_x64/XMP_Samples_64.build/Release/DumpFile.build/Objects-normal/x86_64/DumpFile.LinkFileList
|
|
|
|
|
|
|
|
-mmacosx-version-min=10.9
|
|
|
|
|
|
|
|
-Xlinker
|
|
|
|
|
|
|
|
-object_path_lto
|
|
|
|
|
|
|
|
-Xlinker
|
|
|
|
|
|
|
|
/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/DumpFile/build_x64/XMP_Samples_64.build/Release/DumpFile.build/Objects-normal/x86_64/DumpFile_lto.o
|
|
|
|
|
|
|
|
-stdlib=libstdc++
|
|
|
|
|
|
|
|
-Wl,-search_paths_first
|
|
|
|
|
|
|
|
-Wl,-headerpad_max_install_names
|
|
|
|
|
|
|
|
/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/../../../public/libraries/macintosh/intel_64/Release/libXMPCoreStatic.a
|
|
|
|
|
|
|
|
/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/../../../public/libraries/macintosh/intel_64/Release/libXMPFilesStatic.a
|
|
|
|
|
|
|
|
-framework Cocoa
|
|
|
|
|
|
|
|
-Xlinker
|
|
|
|
|
|
|
|
-dependency_info
|
|
|
|
|
|
|
|
-Xlinker
|
|
|
|
|
|
|
|
/Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/build/cmake/DumpFile/build_x64/XMP_Samples_64.build/Release/DumpFile.build/Objects-normal/x86_64/DumpFile_dependency_info.dat
|
|
|
|
|
|
|
|
-o /Users/rmills/gnu/github/exiv2/xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/samples/target/macintosh/intel_64/Release/DumpFile
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
==========================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 Features to Add to the CMake code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Auto usage of ccache on Linux and Mac.
|
|
|
|
|
|
|
|
* Remove the trick to compile the documentation using the configure script. Native documentation generation on CMake.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
==========================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 Build design for v0.26.1
|
|
|
|
4 Build design for v0.26.1
|
|
|
|
|
|
|
|
|
|
|
|
Added : 2017-08-18
|
|
|
|
Added : 2017-08-18
|
|
|
@ -408,77 +28,6 @@ Modified: 2017-08-23
|
|
|
|
The purpose of the v0.26.1 is to release bug fixes and
|
|
|
|
The purpose of the v0.26.1 is to release bug fixes and
|
|
|
|
experimental new features which may become defaults with v0.27
|
|
|
|
experimental new features which may become defaults with v0.27
|
|
|
|
|
|
|
|
|
|
|
|
4.1 Backwards compatibility
|
|
|
|
|
|
|
|
This feature is being added to v0.26.1 DOT release and therefore existing
|
|
|
|
|
|
|
|
behaviour of ./configure, CMake and msvc does not change.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
./configure --enable-xmp (default is true) will build a library libxmpsdk.a
|
|
|
|
|
|
|
|
using the code in xmpsdk/src. This library is linked into libexiv2.26.dylib
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.2 New Options for ./configure
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
./configure --with-std=c++11
|
|
|
|
|
|
|
|
The default behaviour is the same as v0.26.0 --with-std=-std=c++98
|
|
|
|
|
|
|
|
If the user requests --with-adobe, --with-std=c++11 is the default
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
./configure --with-adobe[=2016|2014]
|
|
|
|
|
|
|
|
This causes the Adobe XMPsdk to be downloaded and built
|
|
|
|
|
|
|
|
into the directory xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/libXMPCore.a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The dynamic library libexiv2.26.dylib will not have libXMPCore.a linked
|
|
|
|
|
|
|
|
All applications (such as exiv2, exifprint etc) will require:
|
|
|
|
|
|
|
|
-Lxmpsdk/Adobe/XMP-Toolkit-SDK-CC201607 -lXMPCore
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This is an important architectural change in libexiv2.26.dylib
|
|
|
|
|
|
|
|
However this is the way to achieve architecture independence between
|
|
|
|
|
|
|
|
exiv2 and Adobe XMPsdk. A longer term goal is to totally remove
|
|
|
|
|
|
|
|
all Adobe code from the exiv2 tarball.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Although --with-adobe causes the default compiler to be --with-std=c++11,
|
|
|
|
|
|
|
|
the code will with --with-std=c++98 The Adobe XMPsdk is built using the script
|
|
|
|
|
|
|
|
xmpsdk/buildXMPsdk which downloads and builds libXMPCore.a using Adobe provided
|
|
|
|
|
|
|
|
CMake code. For the 2016 SDK, libXMPCore.a is built with -std=c++11
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.3 New Options for msvc
|
|
|
|
|
|
|
|
This work has not been started. There are at least two possibilities:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1) To provide a new solution msvc/exiv2-adobe.sln
|
|
|
|
|
|
|
|
This is the model used by msvc/exiv2-webready.sln
|
|
|
|
|
|
|
|
2) To update msvc/configure.py to support options similar to
|
|
|
|
|
|
|
|
./configure --with-std= and ./config --with-adobe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.4 New Options for CMake
|
|
|
|
|
|
|
|
Luis is adopting a two stage approach:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1) Cleaning up and refactoring the existing CMake scripts (*.cmake and CMakeLists.txt files)
|
|
|
|
|
|
|
|
This work is proceeding well.
|
|
|
|
|
|
|
|
2) Adding new EXIV2_ENABLE_XXXXs equivalent to ./configure --with-std and --with-adobe
|
|
|
|
|
|
|
|
This work is waiting for Robin to complete the ./configure modifications.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
It is expected that the CMake files will execute the script xmpsdk/buildXMPsdk.{sh|cmd}
|
|
|
|
|
|
|
|
to perform the build of libXMPCore.a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.5 New Options for contrib/cmake/msvc
|
|
|
|
|
|
|
|
To be written. Luis' great new work may make this obsolete.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.6 Scripts xmpsdk/buildXMPsdk.sh and xmpsdk/buildXMPsdk.cmd
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
These scripts download and build the Adobe XMPsdk. Minor modification of the SDK
|
|
|
|
|
|
|
|
is necessary to enable the code to build. For example, Adobe does not support Cygwin
|
|
|
|
|
|
|
|
and minor change are necessary to build on that platform.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Changes to Adobe code will be minimal and documented in xmpsdk/buildXMPsdk.{sh|cmd}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.7 Support for 32/64 bit builds, Release/Debug, Shared/Static
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1) v0.26.1 will build exactly as v0.26 and support linking static libxmpsdk.a
|
|
|
|
|
|
|
|
32/64 static/shared debug/release are supported on all platforms
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2) The new features (--with-std and --with-adobe) will only be supported for
|
|
|
|
|
|
|
|
a static/release build of libXMPCore.a
|
|
|
|
|
|
|
|
msvc will continue to supports 32/64 ReleaseDLL/Release/DebugDLL/Debug of libexiv2
|
|
|
|
|
|
|
|
which will include the static libXMPCore.a or libxmpsdk.a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.8 Support for MinGW
|
|
|
|
4.8 Support for MinGW
|
|
|
|
MinGW msys/1.0 was deprecated when v0.26 was released.
|
|
|
|
MinGW msys/1.0 was deprecated when v0.26 was released.
|
|
|
|
No support for MinGW msys/1.0 will be provided.
|
|
|
|
No support for MinGW msys/1.0 will be provided.
|
|
|
@ -487,66 +36,6 @@ Modified: 2017-08-23
|
|
|
|
|
|
|
|
|
|
|
|
MinGW msys/2.0 might be supported as "experimental" in Exiv2 v0.26.2
|
|
|
|
MinGW msys/2.0 might be supported as "experimental" in Exiv2 v0.26.2
|
|
|
|
|
|
|
|
|
|
|
|
4.9 Building and linking XMPsdk with libexiv2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Exiv2 v0.26 (and many earlier editions) contain Adobe XMPsdk code.
|
|
|
|
|
|
|
|
The precise version of this code is unknown.
|
|
|
|
|
|
|
|
The xmpsdk/ directory has files in src/*.cpp and include/*.hpp
|
|
|
|
|
|
|
|
The xmpsdk/ has its own Makefile, CMakeLists.txt and msvc/xmpsdk/project files.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Exiv2 v0.26 builds a static library libxmpsdk.a which is linked into libexiv2.a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
None of this will change in Exiv2 v0.26.1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Exiv2 v0.26.1 will support a new option to download and build "pure Adobe" XMPsdk.
|
|
|
|
|
|
|
|
Three flavours will be supported:
|
|
|
|
|
|
|
|
2013 http://download.macromedia.com/pub/developer/xmp/sdk/XMP-Toolkit-SDK-CC-201306.zip
|
|
|
|
|
|
|
|
2014 http://download.macromedia.com/pub/developer/xmp/sdk/XMP-Toolkit-SDK-CC201412.zip
|
|
|
|
|
|
|
|
2016 http://download.macromedia.com/pub/developer/xmp/sdk/XMP-Toolkit-SDK-CC201607.zip
|
|
|
|
|
|
|
|
As Adobe appear to release new editions every 18 months, I guess that Adobe will release
|
|
|
|
|
|
|
|
a new version in Spring 2018.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The autotools build supports new ./configure options:
|
|
|
|
|
|
|
|
--with-adobe builds and links 4089256 Aug 23 11:19 ./xmpsdk/Adobe/XMP-Toolkit-SDK-CC201306/libXMPCore.a
|
|
|
|
|
|
|
|
--with-adobe=2016 as --with-adobe
|
|
|
|
|
|
|
|
--with-adobe=2014 4108792 Aug 23 11:18 ./xmpsdk/Adobe/XMP-Toolkit-SDK-CC201412/libXMPCore.a
|
|
|
|
|
|
|
|
--with-adobe=2013 22242448 Aug 23 10:25 ./xmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/libXMPCore.a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The build of the Adobe XMPsdk is "pure Adobe". We download the code and build it without modification.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The scripts to download and build the Adobe code is:
|
|
|
|
|
|
|
|
xmpsdk/buildXMPsdk.sh
|
|
|
|
|
|
|
|
xmpsdk/buildXMPsdk.cmd
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Adobe build the 2016 SDK with -std=c++11. This links successfully with the libexiv2 -std=c++98 build.
|
|
|
|
|
|
|
|
I haven't investigated which compiler Adobe use to build the 2013 and 2014 editions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mac Build
|
|
|
|
|
|
|
|
Following the analysis of Adobe's build (Topics 1 and 2 in this report), it has been realised that:
|
|
|
|
|
|
|
|
1 Adobe build the SDK with (both linker and compiler) -stdlib=libstdc++
|
|
|
|
|
|
|
|
2 Visibility should be disabled in the compiler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CPPFLAGS = -I/usr/local/include -I/usr/local/include -std=c++98 -fvisibility=hidden -fvisibility-inlines-hidden \
|
|
|
|
|
|
|
|
-stdlib=libstdc++ -Wno-deprecated -Ixmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/public/include
|
|
|
|
|
|
|
|
LDFLAGS = -L/usr/local/lib -lpthread -stdlib=libstdc++ -Wno-deprecated -Lxmpsdk/Adobe/XMP-Toolkit-SDK-CC201607
|
|
|
|
|
|
|
|
LIBS = -lz -lXMPCore
|
|
|
|
|
|
|
|
CXX = g++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Linux Build
|
|
|
|
|
|
|
|
CPPFLAGS = -I/usr/local/include -std=c++98 -Ixmpsdk/Adobe/XMP-Toolkit-SDK-CC201607/public/include
|
|
|
|
|
|
|
|
LDFLAGS = -L/usr/local/lib -ldl -lpthread -Lxmpsdk/Adobe/XMP-Toolkit-SDK-CC201607
|
|
|
|
|
|
|
|
LIBS = -lz -lm -lXMPCore
|
|
|
|
|
|
|
|
CXX = g++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When 2013 or 2014 are selected, the appropriate -Ipath and -Lpath should be set.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CMake Build
|
|
|
|
|
|
|
|
A new option -DEXIV2_ENABLE_ADOBE[=2016|=2014|=2013] should be added.
|
|
|
|
|
|
|
|
The build of XMPsdk should be performed with xmpsdk/buildXMPsdk.sh (or xmpsdk/buildXMPsdk.cmd for Visual Studio)
|
|
|
|
|
|
|
|
The build should set same LDFLAGS and CPPFLAGS as the autotools build.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When the options -DEXIV2_ENABLE_ADOBE is not used, we should compile the code in xmpsdk/src
|
|
|
|
|
|
|
|
to create and link libxmpsdk.a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
==========================================================================
|
|
|
|
==========================================================================
|
|
|
|
|
|
|
|
|
|
|
|