Skip to content

Commit e85f43b

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

File tree

4 files changed

+112
-40
lines changed

4 files changed

+112
-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: 104 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,112 @@
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/IOUtils.cpp
18+
XMP-Toolkit-SDK/source/IOUtils.hpp
19+
XMP-Toolkit-SDK/source/PerfUtils.cpp
20+
XMP-Toolkit-SDK/source/PerfUtils.hpp
21+
XMP-Toolkit-SDK/source/SafeStringAPIs.cpp
22+
XMP-Toolkit-SDK/source/SafeStringAPIs.h
23+
XMP-Toolkit-SDK/source/SafeTypes.h
24+
XMP-Toolkit-SDK/source/SuppressSAL.h
25+
XMP-Toolkit-SDK/source/UnicodeConversions.cpp
26+
XMP-Toolkit-SDK/source/UnicodeConversions.hpp
27+
XMP-Toolkit-SDK/source/UnicodeInlines.incl_cpp
28+
XMP-Toolkit-SDK/source/XIO.cpp
29+
XMP-Toolkit-SDK/source/XIO.hpp
30+
XMP-Toolkit-SDK/source/XML_Node.cpp
31+
XMP-Toolkit-SDK/source/XMLParserAdapter.hpp
32+
XMP-Toolkit-SDK/source/XMPFiles_IO.cpp
33+
XMP-Toolkit-SDK/source/XMPFiles_IO.hpp
34+
XMP-Toolkit-SDK/source/XMP_LibUtils.cpp
35+
XMP-Toolkit-SDK/source/XMP_LibUtils.hpp
36+
XMP-Toolkit-SDK/source/XMP_ProgressTracker.cpp
37+
XMP-Toolkit-SDK/source/XMP_ProgressTracker.hpp
38+
39+
XMP-Toolkit-SDK/XMPCore/source/ExpatAdapter.cpp
40+
XMP-Toolkit-SDK/XMPCore/source/ParseRDF.cpp
41+
XMP-Toolkit-SDK/XMPCore/source/WXMPMeta.cpp
42+
XMP-Toolkit-SDK/XMPCore/source/WXMPUtils.cpp
43+
XMP-Toolkit-SDK/XMPCore/source/XMPCore_Impl.cpp
44+
XMP-Toolkit-SDK/XMPCore/source/XMPIterator.cpp
45+
XMP-Toolkit-SDK/XMPCore/source/WXMPIterator.cpp
46+
XMP-Toolkit-SDK/XMPCore/source/XMPMeta.cpp
47+
XMP-Toolkit-SDK/XMPCore/source/XMPMeta-GetSet.cpp
48+
XMP-Toolkit-SDK/XMPCore/source/XMPMeta-Parse.cpp
49+
XMP-Toolkit-SDK/XMPCore/source/XMPMeta-Serialize.cpp
50+
XMP-Toolkit-SDK/XMPCore/source/XMPUtils.cpp
51+
XMP-Toolkit-SDK/XMPCore/source/XMPUtils-FileInfo.cpp
52+
53+
XMP-Toolkit-SDK/third-party/zuid/interfaces/MD5.cpp
2854
)
2955

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

3280
# 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)
81+
target_compile_definitions(exiv2-xmp PUBLIC BanAllEntityUsage=1)
3482

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

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()
90+
if (WIN32)
91+
target_sources(exiv2-xmp PRIVATE XMP-Toolkit-SDK/source/Host_IO-Win.cpp)
92+
target_compile_definitions(exiv2-xmp PRIVATE XML_STATIC)
93+
target_compile_definitions(exiv2-xmp PUBLIC WIN_ENV)
94+
target_compile_definitions(exiv2-xmp PRIVATE WIN32 UNICODE _UNICODE _CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS)
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 (APPLE)
103+
target_sources(exiv2-xmp PRIVATE XMP-Toolkit-SDK/source/Host_IO-POSIX.cpp)
104+
target_compile_definitions(exiv2-xmp PUBLIC MAC_ENV)
105+
elseif (UNIX)
106+
target_sources(exiv2-xmp PRIVATE XMP-Toolkit-SDK/source/Host_IO-POSIX.cpp)
107+
target_compile_definitions(exiv2-xmp PUBLIC UNIX_ENV)
108+
endif ()
109+
110+
if (BUILD_SHARED_LIBS)
111+
set_property(TARGET exiv2-xmp PROPERTY POSITION_INDEPENDENT_CODE ON)
112+
endif ()

xmpsdk/XMP-Toolkit-SDK

Submodule XMP-Toolkit-SDK added at 5f6fe44

0 commit comments

Comments
 (0)