-
Notifications
You must be signed in to change notification settings - Fork 1.8k
/
Copy pathcmake.patch
287 lines (262 loc) · 11.5 KB
/
cmake.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
CMakeLists.txt | 18 ++++++-----
cmake/msix_options.cmake | 10 +++----
src/CMakeLists.txt | 1 -
src/makemsix/CMakeLists.txt | 3 ++
src/msix/CMakeLists.txt | 73 ++++++++++++++++-----------------------------
5 files changed, 45 insertions(+), 60 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dc5908cd..447bd44b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,11 +21,13 @@ if(POLICY CMP0077)
cmake_policy(SET CMP0077 NEW)
endif()
+if(CALCULATE_VERSION)
# Default version is 0.0.0
set(VERSION_MAJOR "0")
set(VERSION_MINOR "0")
set(VERSION_PATCH "0")
set(GIT_BRANCH_NAME "master")
+endif()
# CMake useful variables
set(MSIX_PROJECT_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
@@ -35,6 +37,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
+if(CALCULATE_VERSION)
## Git (and its revision)
find_package(Git) # QUIET) # if we don't find git or FindGit.cmake is not on the system we ignore it.
@@ -77,15 +80,22 @@ if(GIT_FOUND)
else()
message("git not found.")
endif()
+endif()
+if(CALCULATE_VERSION)
# Set the version number of your project here (format is MAJOR.MINOR.PATCHLEVEL - e.g. 1.0.0)
set(MSIX_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
message(STATUS "MSIX Packaging SDK version ${MSIX_VERSION}")
message(STATUS "MSIX Packaging SDK branch name ${GIT_BRANCH_NAME}")
add_definitions(-DSDK_VERSION="${MSIX_VERSION}")
+else()
+message(STATUS "MSIX Packaging SDK version ${PROJECT_VERSION}")
+add_definitions(-DSDK_VERSION="${PROJECT_VERSION}")
+endif()
# Validates CMake options.
include(msix_options)
+if(ENABLE_NUGET_PACKAGING)
# Configure Package.nuspec
if(WIN32)
set(MSIX_NUGET_NAME "Microsoft.MSIX.Packaging.Windows")
@@ -103,6 +113,7 @@ configure_file(${MSIX_PROJECT_ROOT}/Package.nuspec.cmakein ${MSIX_BINARY_ROOT}/P
configure_file(${MSIX_PROJECT_ROOT}/Microsoft.MSIX.Packaging.targets ${MSIX_BINARY_ROOT}/build/native/${MSIX_NUGET_NAME}.targets)
message(STATUS "Package.Nuspec created")
message(STATUS "--------------------------------")
+endif()
# Configure license txt
configure_file(${MSIX_PROJECT_ROOT}/LICENSE ${MSIX_BINARY_ROOT}/build/LICENSE)
@@ -170,9 +181,6 @@ if((MACOS) OR (IOS))
message(FATAL_ERROR "Unsupported iOS version: ${IOS_DEPLOYMENT_TARGET}, this project requires at least iOS version 10.0")
endif()
endif()
-elseif(AOSP OR LINUX)
- # Static libraries must be position independent to be linked with a shared object.
- set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
# Mac needed variables
@@ -183,10 +191,6 @@ set(CMAKE_MACOSX_RPATH ON)
#set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
#set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-add_subdirectory(lib)
-message(STATUS "libs processed")
add_subdirectory(src)
message(STATUS "src processed")
-add_subdirectory(sample)
-message(STATUS "sample processed")
message(STATUS "DONE!")
diff --git a/cmake/msix_options.cmake b/cmake/msix_options.cmake
index faba2fbe..5ccdb087 100644
--- a/cmake/msix_options.cmake
+++ b/cmake/msix_options.cmake
@@ -13,7 +13,7 @@ option(USE_SHARED_ZLIB "Choose the type of dependency for zlib, Use the -DUSE_SH
option(USE_STATIC_MSVC "Windows only. Pass /MT as a compiler flag to use the staic version of the run-time library. Default is 'off' (dynamic)" OFF)
option(SKIP_BUNDLES "Removes bundle functionality from the MSIX SDK. Default is 'off'" OFF)
option(MSIX_PACK "Include packaging features for the MSIX SDK. Not supported for mobile. Default is 'off'" OFF)
-option(USE_MSIX_SDK_ZLIB "Use zlib implementation under lib/zlib. If off, uses inbox compression library. For Windows and Linux this is no-opt." OFF)
+option(USE_EXTERNAL_ZLIB "Use an external zlib package. If off, uses inbox compression library. For Windows and Linux this is no-opt." OFF)
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel. Use the -DCMAKE_BUILD_TYPE=[option] to specify.")
set(XML_PARSER "" CACHE STRING "Choose the type of parser, options are: [xerces, msxml6, javaxml]. Use the -DXML_PARSER=[option] to specify.")
@@ -70,8 +70,8 @@ if(MSIX_PACK)
if(AOSP OR IOS)
message(FATAL_ERROR "Packaging is not supported for mobile devices.")
elseif(MAC)
- if(NOT USE_MSIX_SDK_ZLIB)
- message(FATAL_ERROR "Using libCompression APIs and packaging features is not supported. Use -DUSE_MSIX_SDK_ZLIB=on")
+ if(NOT USE_EXTERNAL_ZLIB)
+ message(FATAL_ERROR "Using libCompression APIs and packaging features is not supported. Use -DUSE_EXTERNAL_ZLIB=on")
endif()
if(NOT (XML_PARSER MATCHES xerces))
message(FATAL_ERROR "Xerces is the only supported parser for MacOS pack. Use -DXML_PARSER=xerces")
@@ -84,9 +84,9 @@ endif()
# Compression
set(COMPRESSION_LIB "zlib")
-if(((IOS) OR (MACOS)) AND (NOT USE_MSIX_SDK_ZLIB))
+if(((IOS) OR (MACOS)) AND (NOT USE_EXTERNAL_ZLIB))
set(COMPRESSION_LIB "libCompression")
-elseif((AOSP) AND (NOT USE_MSIX_SDK_ZLIB))
+elseif((AOSP) AND (NOT USE_EXTERNAL_ZLIB))
set(COMPRESSION_LIB "inbox zlib")
endif()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index a2655a7b..5d224b64 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,4 +6,3 @@ cmake_minimum_required(VERSION 3.8.0 FATAL_ERROR)
add_subdirectory(msix)
add_subdirectory(makemsix)
-add_subdirectory(test)
diff --git a/src/makemsix/CMakeLists.txt b/src/makemsix/CMakeLists.txt
index 92b082e6..ebae9789 100644
--- a/src/makemsix/CMakeLists.txt
+++ b/src/makemsix/CMakeLists.txt
@@ -24,3 +24,6 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${MSIX_BINARY_ROOT}/src/msix)
add_dependencies(${PROJECT_NAME} msix)
target_link_libraries(${PROJECT_NAME} msix)
+
+# define installing rules for target files
+install(TARGETS ${PROJECT_NAME})
diff --git a/src/msix/CMakeLists.txt b/src/msix/CMakeLists.txt
index 75d3afdf..17f313be 100644
--- a/src/msix/CMakeLists.txt
+++ b/src/msix/CMakeLists.txt
@@ -6,6 +6,11 @@ cmake_minimum_required(VERSION 3.8.0 FATAL_ERROR)
project(msix)
+# Define the library
+add_library(${PROJECT_NAME}
+ msix.cpp
+)
+
# Handle exports and flags we need to set
list(APPEND MSIX_UNPACK_EXPORTS
"UnpackPackage"
@@ -144,7 +149,7 @@ if(NOT SKIP_BUNDLES)
if (WIN32)
list(APPEND MsixSrc PAL/Applicability/Win32/Applicability.cpp)
elseif(LINUX)
- find_package(ICU REQUIRED COMPONENTS uc)
+ target_link_libraries(${PROJECT_NAME} PRIVATE CONAN_PKG::icu)
list(APPEND MsixSrc PAL/Applicability/Linux/Applicability.cpp)
elseif(AOSP)
list(APPEND MsixSrc PAL/Applicability/AOSP/Applicability.cpp)
@@ -154,7 +159,7 @@ if(NOT SKIP_BUNDLES)
endif()
# Compression option
-if(((IOS) OR (MACOS)) AND (NOT USE_MSIX_SDK_ZLIB))
+if(((IOS) OR (MACOS)) AND (NOT USE_EXTERNAL_ZLIB))
list(APPEND MsixSrc PAL/DataCompression/Apple/CompressionObject.cpp)
else()
list(APPEND MsixSrc PAL/DataCompression/Zlib/CompressionObject.cpp)
@@ -195,14 +200,16 @@ if(CRYPTO_LIB MATCHES crypt32)
PAL/Signature/Win32/SignatureValidator.cpp
)
elseif(CRYPTO_LIB MATCHES openssl)
- if(OpenSSL_FOUND)
- list(APPEND MsixSrc
- PAL/Crypto/OpenSSL/Crypto.cpp
- PAL/Signature/OpenSSL/SignatureValidator.cpp
- )
+ list(APPEND MsixSrc
+ PAL/Crypto/OpenSSL/Crypto.cpp
+ PAL/Signature/OpenSSL/SignatureValidator.cpp
+ )
+ if((IOS) OR (MACOS))
+ target_link_libraries(${PROJECT_NAME} PRIVATE CONAN_PKG::openssl -Wl,-dead_strip)
+ elseif(NOT MSVC)
+ target_link_libraries(${PROJECT_NAME} PRIVATE CONAN_PKG::openssl -Wl,--gc-sections)
else()
- # ... and were done here... :/
- message(FATAL_ERROR "OpenSSL NOT FOUND!")
+ target_link_libraries(${PROJECT_NAME} PRIVATE CONAN_PKG::openssl)
endif()
endif()
@@ -220,14 +227,7 @@ foreach(FILE ${MsixSrc})
message(STATUS "\t${FILE}")
endforeach()
-# Define the library
-add_library(${PROJECT_NAME} SHARED
- msix.cpp
- ${MsixSrc}
-)
-
-# Adding dependency to the third party libs directory
-add_dependencies(${PROJECT_NAME} LIBS)
+target_sources(${PROJECT_NAME} PRIVATE ${MsixSrc})
# Copy out public headers to <binary dir>/src/unpack
configure_file(../inc/MSIXWindows.hpp ${CMAKE_CURRENT_BINARY_DIR}/MSIXWindows.hpp )
@@ -260,7 +260,7 @@ if(WIN32)
"/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll")
string(REPLACE ";" " " DELAYFLAGS "${DELAYFLAGS}")
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS "${DELAYFLAGS} /LTCG")
- set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS " /DEF:windowsexports.def")
+ set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS " /DEF:${CMAKE_CURRENT_BINARY_DIR}/windowsexports.def")
if(USE_STATIC_MSVC)
if(CMAKE_BUILD_TYPE MATCHES Debug)
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS " /NODEFAULTLIB:MSVCRTD")
@@ -279,35 +279,26 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
)
# Compression
-if(((IOS) OR (MACOS)) AND (NOT USE_MSIX_SDK_ZLIB))
+if(((IOS) OR (MACOS)) AND (NOT USE_EXTERNAL_ZLIB))
# for macos and ios use the inbox libcompression zlib apis instead of zlib, unless zlib is explicitly requested.
target_include_directories(${PROJECT_NAME} PRIVATE ${MSIX_PROJECT_ROOT}/src/msix/PAL/DataCompression/Apple)
target_link_libraries(${PROJECT_NAME} PRIVATE libcompression.dylib)
-elseif((AOSP) AND (NOT USE_MSIX_SDK_ZLIB))
+elseif((AOSP) AND (NOT USE_EXTERNAL_ZLIB))
# for AOSP, use the libz.so from the android ndk.
- find_package(ZLIB REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE -lz)
-else() # WIN32 or USE_MSIX_SDK_ZLIB
- target_include_directories(${PROJECT_NAME} PRIVATE
- ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/zlib
- ${MSIX_PROJECT_ROOT}/lib/zlib
- )
+else()
if(USE_SHARED_ZLIB)
message(STATUS "MSIX takes a dynamic dependency on zlib")
- target_link_libraries(${PROJECT_NAME} PRIVATE zlib)
+ target_link_libraries(${PROJECT_NAME} PRIVATE CONAN_PKG::zlib)
else()
message(STATUS "MSIX takes a static dependency on zlib")
- target_link_libraries(${PROJECT_NAME} PRIVATE zlibstatic)
+ target_link_libraries(${PROJECT_NAME} PRIVATE CONAN_PKG::zlib)
endif()
endif()
# Parser
if(XML_PARSER MATCHES xerces)
- target_include_directories(${PROJECT_NAME} PRIVATE
- ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/xerces/src
- ${MSIX_PROJECT_ROOT}/lib/xerces/src
- )
- target_link_libraries(${PROJECT_NAME} PRIVATE xerces-c)
+ target_link_libraries(${PROJECT_NAME} PRIVATE CONAN_PKG::xerces-c)
endif()
if(XML_PARSER MATCHES applexml)
@@ -363,18 +354,6 @@ endif()
if((IOS) OR (MACOS))
target_link_libraries(${PROJECT_NAME} PRIVATE ${COREFOUNDATION_LIBRARY} ${FOUNDATION_LIBRARY})
endif()
-if(LINUX)
- target_link_libraries(${PROJECT_NAME} PRIVATE ${ICU_LIBRARIES})
-endif()
-if(OpenSSL_FOUND)
- # include the libraries needed to use OpenSSL
- target_include_directories(${PROJECT_NAME} PRIVATE ${OpenSSL_INCLUDE_PATH})
- if((IOS) OR (MACOS))
- target_link_libraries(${PROJECT_NAME} PRIVATE crypto -Wl,-dead_strip)
- elseif(NOT MSVC)
- target_link_libraries(${PROJECT_NAME} PRIVATE crypto -Wl,--gc-sections)
- else()
- target_link_libraries(${PROJECT_NAME} PRIVATE crypto)
- endif()
-endif()
+# define installing rules for target files
+install(TARGETS ${PROJECT_NAME})