Skip to content

Commit b39170a

Browse files
committed
adds XMP-Toolkit-SDK as a submodule
1 parent 35a6b8f commit b39170a

File tree

4 files changed

+108
-40
lines changed

4 files changed

+108
-40
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "xmpsdk/XMP-Toolkit-SDK"]
2+
path = xmpsdk/XMP-Toolkit-SDK
3+
url = https://github.com/adobe/XMP-Toolkit-SDK.git

src/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,9 @@ if(EXIV2_ENABLE_XMP OR EXIV2_ENABLE_EXTERNAL_XMP)
210210
endif()
211211

212212
if(EXIV2_ENABLE_XMP)
213-
target_sources(exiv2lib PRIVATE $<TARGET_OBJECTS:exiv2-xmp>)
213+
# target_sources(exiv2lib PRIVATE $<TARGET_OBJECTS:exiv2-xmp>)
214+
target_link_libraries(exiv2lib PRIVATE exiv2-xmp)
215+
target_compile_definitions(exiv2lib PUBLIC EXV_ADOBE_XMPSDK=2016)
214216
elseif(EXIV2_ENABLE_EXTERNAL_XMP)
215217
target_link_libraries(exiv2lib PUBLIC ${XMPSDK_LIBRARY})
216218
target_include_directories(exiv2lib PUBLIC ${XMPSDK_INCLUDE_DIR})
@@ -307,7 +309,7 @@ set(requires_private_for_pc_file
307309

308310
write_basic_package_version_file(exiv2ConfigVersion.cmake COMPATIBILITY ExactVersion)
309311

310-
install(TARGETS exiv2lib EXPORT exiv2Export)
312+
install(TARGETS exiv2lib exiv2-xmp EXPORT exiv2Export)
311313

312314
include(CMakePackageConfigHelpers)
313315
configure_package_config_file(

xmpsdk/CMakeLists.txt

Lines changed: 100 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,108 @@
11
add_library(
2-
exiv2-xmp OBJECT
3-
src/ExpatAdapter.cpp
4-
src/MD5.cpp
5-
src/ParseRDF.cpp
6-
src/UnicodeConversions.cpp
7-
src/WXMPIterator.cpp
8-
src/WXMPMeta.cpp
9-
src/WXMPUtils.cpp
10-
src/XML_Node.cpp
11-
src/XMPCore_Impl.cpp
12-
src/XMPIterator.cpp
13-
src/XMPMeta-GetSet.cpp
14-
src/XMPMeta-Parse.cpp
15-
src/XMPMeta-Serialize.cpp
16-
src/XMPMeta.cpp
17-
src/XMPUtils-FileInfo.cpp
18-
src/XMPUtils.cpp
19-
include/MD5.h
20-
include/TXMPIterator.hpp
21-
include/TXMPMeta.hpp
22-
include/TXMPUtils.hpp
23-
include/XMP_Const.h
24-
include/XMP_Environment.h
25-
include/XMP.incl_cpp
26-
include/XMPSDK.hpp
27-
include/XMP_Version.h
2+
exiv2-xmp OBJECT
3+
XMP-Toolkit-SDK/public/include/XMP_Const.h
4+
XMP-Toolkit-SDK/public/include/XMP_Environment.h
5+
XMP-Toolkit-SDK/public/include/XMP_Version.h
6+
XMP-Toolkit-SDK/public/include/TXMPFiles.hpp
7+
XMP-Toolkit-SDK/public/include/TXMPIterator.hpp
8+
XMP-Toolkit-SDK/public/include/TXMPMeta.hpp
9+
XMP-Toolkit-SDK/public/include/TXMPUtils.hpp
10+
XMP-Toolkit-SDK/public/include/XMP.hpp
11+
XMP-Toolkit-SDK/public/include/XMP_IO.hpp
12+
13+
XMP-Toolkit-SDK/source/Endian.h
14+
XMP-Toolkit-SDK/source/EndianUtils.hpp
15+
XMP-Toolkit-SDK/source/ExpatAdapter.hpp
16+
XMP-Toolkit-SDK/source/Host_IO.hpp
17+
XMP-Toolkit-SDK/source/Host_IO-POSIX.cpp
18+
XMP-Toolkit-SDK/source/IOUtils.cpp
19+
XMP-Toolkit-SDK/source/IOUtils.hpp
20+
XMP-Toolkit-SDK/source/PerfUtils.cpp
21+
XMP-Toolkit-SDK/source/PerfUtils.hpp
22+
XMP-Toolkit-SDK/source/SafeStringAPIs.cpp
23+
XMP-Toolkit-SDK/source/SafeStringAPIs.h
24+
XMP-Toolkit-SDK/source/SafeTypes.h
25+
XMP-Toolkit-SDK/source/SuppressSAL.h
26+
XMP-Toolkit-SDK/source/UnicodeConversions.cpp
27+
XMP-Toolkit-SDK/source/UnicodeConversions.hpp
28+
XMP-Toolkit-SDK/source/UnicodeInlines.incl_cpp
29+
XMP-Toolkit-SDK/source/XIO.cpp
30+
XMP-Toolkit-SDK/source/XIO.hpp
31+
XMP-Toolkit-SDK/source/XML_Node.cpp
32+
XMP-Toolkit-SDK/source/XMLParserAdapter.hpp
33+
XMP-Toolkit-SDK/source/XMPFiles_IO.cpp
34+
XMP-Toolkit-SDK/source/XMPFiles_IO.hpp
35+
XMP-Toolkit-SDK/source/XMP_LibUtils.cpp
36+
XMP-Toolkit-SDK/source/XMP_LibUtils.hpp
37+
XMP-Toolkit-SDK/source/XMP_ProgressTracker.cpp
38+
XMP-Toolkit-SDK/source/XMP_ProgressTracker.hpp
39+
40+
XMP-Toolkit-SDK/XMPCore/source/ExpatAdapter.cpp
41+
XMP-Toolkit-SDK/XMPCore/source/ParseRDF.cpp
42+
XMP-Toolkit-SDK/XMPCore/source/WXMPMeta.cpp
43+
XMP-Toolkit-SDK/XMPCore/source/WXMPUtils.cpp
44+
XMP-Toolkit-SDK/XMPCore/source/XMPCore_Impl.cpp
45+
XMP-Toolkit-SDK/XMPCore/source/XMPIterator.cpp
46+
XMP-Toolkit-SDK/XMPCore/source/WXMPIterator.cpp
47+
XMP-Toolkit-SDK/XMPCore/source/XMPMeta.cpp
48+
XMP-Toolkit-SDK/XMPCore/source/XMPMeta-GetSet.cpp
49+
XMP-Toolkit-SDK/XMPCore/source/XMPMeta-Parse.cpp
50+
XMP-Toolkit-SDK/XMPCore/source/XMPMeta-Serialize.cpp
51+
XMP-Toolkit-SDK/XMPCore/source/XMPUtils.cpp
52+
XMP-Toolkit-SDK/XMPCore/source/XMPUtils-FileInfo.cpp
53+
54+
XMP-Toolkit-SDK/third-party/zuid/interfaces/MD5.cpp
2855
)
2956

30-
target_include_directories(exiv2-xmp SYSTEM PRIVATE ${PROJECT_SOURCE_DIR}/xmpsdk/include ${EXPAT_INCLUDE_DIRS})
57+
# there is an include for /third-party/expat/lib/expat.h in XMP-Toolkit-SDK
58+
# we do these shenanigans to create a fake /third-party/expat/ in build directory
59+
if (NOT EXISTS ${CMAKE_BINARY_DIR}/fake_expat/third-party/expat/lib)
60+
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/fake_expat/third-party/expat/lib)
61+
endif ()
62+
file(GLOB_RECURSE EXPAT_H ${EXPAT_INCLUDE_DIRS}*/expat.h)
63+
list(LENGTH EXPAT_H EXPAT_H_ITEM_CNT)
64+
if(EXPAT_H_ITEM_CNT EQUAL 1)
65+
list(GET EXPAT_H 0 EXPAT_H)
66+
message(STATUS "The list contains one item: ${EXPAT_H}")
67+
file(COPY_FILE ${EXPAT_H} ${CMAKE_BINARY_DIR}/fake_expat/third-party/expat/lib/expat.h)
68+
else()
69+
message(FATAL_ERROR "Cannot find expat.h")
70+
endif()
71+
72+
target_include_directories(exiv2-xmp PRIVATE
73+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/XMP-Toolkit-SDK/public/include>
74+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/XMP-Toolkit-SDK/source/>
75+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/XMP-Toolkit-SDK/>
76+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/XMP-Toolkit-SDK/third-party/zuid/>
77+
${EXPAT_INCLUDE_DIRS}
78+
${CMAKE_BINARY_DIR}/fake_expat # this is the fake include directory needed for expat
79+
)
3180

3281
# Prevent a denial-service-attack related to XML entity expansion ("billion laughs attack"). See https://bugzilla.redhat.com/show_bug.cgi?id=888769
33-
target_compile_definitions(exiv2-xmp PRIVATE BanAllEntityUsage=1)
82+
target_compile_definitions(exiv2-xmp PUBLIC BanAllEntityUsage=1)
3483

35-
if(WIN32)
36-
target_compile_definitions(exiv2-xmp PRIVATE XML_STATIC)
37-
endif()
84+
# need to be careful not to expose any xmp includes in exiv2 headers
85+
target_include_directories(exiv2-xmp PUBLIC
86+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/XMP-Toolkit-SDK/> # md5.h seems to need this
87+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/XMP-Toolkit-SDK/public/include>
88+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/XMP-Toolkit-SDK/third-party/zuid/interfaces>
89+
)
3890

39-
if(MINGW)
40-
# https://stackoverflow.com/questions/18551409/localtime-r-support-on-mingw
41-
target_compile_definitions(exiv2-xmp PRIVATE _POSIX_THREAD_SAFE_FUNCTIONS)
42-
endif()
91+
if (WIN32)
92+
target_compile_definitions(exiv2-xmp PRIVATE XML_STATIC)
93+
target_compile_definitions(exiv2-xmp PUBLIC WIN_ENV)
94+
target_sources(exiv2-xmp PRIVATE XMP-Toolkit-SDK/source/Host_IO-Win.cpp)
95+
endif ()
4396

44-
if(BUILD_SHARED_LIBS)
45-
set_property(TARGET exiv2-xmp PROPERTY POSITION_INDEPENDENT_CODE ON)
46-
endif()
97+
if (MINGW)
98+
# https://stackoverflow.com/questions/18551409/localtime-r-support-on-mingw
99+
target_compile_definitions(exiv2-xmp PRIVATE _POSIX_THREAD_SAFE_FUNCTIONS)
100+
endif ()
101+
102+
if (UNIX)
103+
target_compile_definitions(exiv2-xmp PUBLIC UNIX_ENV)
104+
endif ()
105+
106+
if (BUILD_SHARED_LIBS)
107+
set_property(TARGET exiv2-xmp PROPERTY POSITION_INDEPENDENT_CODE ON)
108+
endif ()

xmpsdk/XMP-Toolkit-SDK

Submodule XMP-Toolkit-SDK added at 5f6fe44

0 commit comments

Comments
 (0)