Build specification for v0.26.1

This commit is contained in:
Robin Mills 2017-08-18 14:58:01 +01:00
parent afba52e042
commit 25a42e445a

View File

@ -15,10 +15,19 @@ T A B L E o f C O N T E N T S
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
==========================================================================
1 Building XMPsdk and Samples in Terminal with the ./Generate_XXX_mac.sh scripts
--------------------------------------------------------------------------------
Added : 2017-08-18
Modified: 2017-08-18
@ -68,10 +77,10 @@ XMPIterations
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)
/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 not link -lXMPCore with libexiv2.26.dylib
@ -89,7 +98,6 @@ $ env VERBOSE=1 xcodebuild -project xcode/intel_64/XMP_Samples_64.xcodeproj -con
==========================================================================
2 Puzzle with autotools/--with-adobe MacOS-X Only
-------------------------------------------------
Added : 2017-08-17
Modified: 2017-08-18
@ -157,9 +165,9 @@ ls -alt src/.libs/libexiv2.26.dylib
---------------------------------------------
Edit src/Makefile#242 and change:
@$(LIBTOOL) --mode=link $(LINK.cc) -o ../bin/$@ $(LIBRARY) $(EXIV2OBJ) $(EXIV2COBJ) -rpath $(libdir)
@$(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)
@$(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
@ -375,11 +383,102 @@ clang -x c++
==========================================================================
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
Modified: 2017-08-18
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 link static libxmpsdk
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 libCore.a
msvc will continue to supports 32/64 ReleaseDLL/Release/DebugDLL/Debug
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.
It's very likely that the MinGW msys/1.0 will build.
I will not provide any user support for MinGW msys/1.0 in future.
MinGW msys/2.0 might be supported as "experimental" in Exiv2 v0.26.2
==========================================================================
# That's all Folks!
==========================================================================