Remove deprecated sections from WORK-IN-PROGRESS
This commit is contained in:
parent
9733863030
commit
77369dcb72
511
WORK-IN-PROGRESS
511
WORK-IN-PROGRESS
@ -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.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.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.9 Linking XMPsdk with libexiv2
|
||||
|
||||
5 Refactoring the Tiff Code
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
MinGW msys/1.0 was deprecated when v0.26 was released.
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
==========================================================================
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user