|
1 | 1 | 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 |
28 | 55 | )
|
29 | 56 |
|
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 | +) |
31 | 80 |
|
32 | 81 | # 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) |
34 | 83 |
|
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 | +) |
38 | 90 |
|
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 () |
43 | 96 |
|
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 () |
0 commit comments