fast_excel 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +1 -7
- data/CHANGELOG.md +9 -0
- data/Gemfile +1 -1
- data/examples/example.rb +2 -0
- data/examples/example_date_time.rb +38 -0
- data/fast_excel.gemspec +2 -2
- data/lib/fast_excel/binding/format.rb +17 -0
- data/lib/fast_excel/binding/workbook.rb +39 -17
- data/lib/fast_excel/binding/worksheet.rb +57 -13
- data/lib/fast_excel/binding.rb +7 -7
- data/lib/fast_excel.rb +27 -20
- data/libxlsxwriter/.github/FUNDING.yml +1 -0
- data/libxlsxwriter/.github/ISSUE_TEMPLATE.md +85 -0
- data/libxlsxwriter/.github/PULL_REQUEST_TEMPLATE.md +130 -0
- data/libxlsxwriter/.github/workflows/cmake_actions.yml +48 -0
- data/libxlsxwriter/.github/workflows/code_style.yml +23 -0
- data/libxlsxwriter/.github/workflows/coverity.yml +22 -0
- data/libxlsxwriter/.github/workflows/make_actions.yml +52 -0
- data/libxlsxwriter/.github/workflows/valgrind.yml +23 -0
- data/libxlsxwriter/.github/workflows/windows_build.yml +54 -0
- data/libxlsxwriter/.github/workflows/zig_build.yml +22 -0
- data/libxlsxwriter/.gitignore +16 -1
- data/libxlsxwriter/.indent.pro +24 -0
- data/libxlsxwriter/CMakeLists.txt +156 -56
- data/libxlsxwriter/CONTRIBUTING.md +2 -2
- data/libxlsxwriter/Changes.txt +344 -2
- data/libxlsxwriter/LICENSE.txt +66 -8
- data/libxlsxwriter/Makefile +151 -54
- data/libxlsxwriter/Package.swift +42 -0
- data/libxlsxwriter/Readme.md +4 -2
- data/libxlsxwriter/build.zig +324 -0
- data/libxlsxwriter/build.zig.zon +11 -0
- data/libxlsxwriter/cmake/FindMINIZIP.cmake +3 -3
- data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +6 -0
- data/libxlsxwriter/include/xlsxwriter/app.h +2 -1
- data/libxlsxwriter/include/xlsxwriter/chart.h +236 -32
- data/libxlsxwriter/include/xlsxwriter/chartsheet.h +7 -7
- data/libxlsxwriter/include/xlsxwriter/comment.h +76 -0
- data/libxlsxwriter/include/xlsxwriter/common.h +111 -50
- data/libxlsxwriter/include/xlsxwriter/content_types.h +8 -1
- data/libxlsxwriter/include/xlsxwriter/core.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/custom.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/drawing.h +11 -20
- data/libxlsxwriter/include/xlsxwriter/format.h +121 -8
- data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/metadata.h +49 -0
- data/libxlsxwriter/include/xlsxwriter/packager.h +27 -16
- data/libxlsxwriter/include/xlsxwriter/relationships.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/shared_strings.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/styles.h +13 -7
- data/libxlsxwriter/include/xlsxwriter/table.h +51 -0
- data/libxlsxwriter/include/xlsxwriter/theme.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/third_party/emyg_dtoa.h +26 -0
- data/libxlsxwriter/include/xlsxwriter/third_party/ioapi.h +27 -25
- data/libxlsxwriter/include/xlsxwriter/third_party/md5.h +45 -0
- data/libxlsxwriter/include/xlsxwriter/third_party/zip.h +155 -153
- data/libxlsxwriter/include/xlsxwriter/utility.h +70 -8
- data/libxlsxwriter/include/xlsxwriter/vml.h +55 -0
- data/libxlsxwriter/include/xlsxwriter/workbook.h +218 -47
- data/libxlsxwriter/include/xlsxwriter/worksheet.h +2770 -241
- data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +12 -8
- data/libxlsxwriter/include/xlsxwriter.h +4 -2
- data/libxlsxwriter/libxlsxwriter.podspec +8 -5
- data/libxlsxwriter/src/Makefile +58 -21
- data/libxlsxwriter/src/app.c +5 -2
- data/libxlsxwriter/src/chart.c +396 -81
- data/libxlsxwriter/src/chartsheet.c +22 -22
- data/libxlsxwriter/src/comment.c +443 -0
- data/libxlsxwriter/src/content_types.c +40 -1
- data/libxlsxwriter/src/core.c +2 -2
- data/libxlsxwriter/src/custom.c +1 -1
- data/libxlsxwriter/src/drawing.c +160 -40
- data/libxlsxwriter/src/format.c +109 -25
- data/libxlsxwriter/src/hash_table.c +1 -1
- data/libxlsxwriter/src/metadata.c +283 -0
- data/libxlsxwriter/src/packager.c +794 -94
- data/libxlsxwriter/src/relationships.c +1 -1
- data/libxlsxwriter/src/shared_strings.c +2 -4
- data/libxlsxwriter/src/styles.c +353 -58
- data/libxlsxwriter/src/table.c +304 -0
- data/libxlsxwriter/src/theme.c +1 -1
- data/libxlsxwriter/src/utility.c +143 -43
- data/libxlsxwriter/src/vml.c +1062 -0
- data/libxlsxwriter/src/workbook.c +567 -77
- data/libxlsxwriter/src/worksheet.c +6668 -1462
- data/libxlsxwriter/src/xmlwriter.c +95 -5
- data/libxlsxwriter/third_party/dtoa/Makefile +42 -0
- data/libxlsxwriter/third_party/dtoa/emyg_dtoa.c +461 -0
- data/libxlsxwriter/third_party/dtoa/emyg_dtoa.h +26 -0
- data/libxlsxwriter/third_party/md5/Makefile +42 -0
- data/libxlsxwriter/third_party/md5/md5.c +291 -0
- data/libxlsxwriter/third_party/md5/md5.h +45 -0
- data/libxlsxwriter/third_party/minizip/Makefile +3 -8
- data/libxlsxwriter/third_party/minizip/Makefile.orig +8 -4
- data/libxlsxwriter/third_party/minizip/MiniZip64_Changes.txt +1 -1
- data/libxlsxwriter/third_party/minizip/configure.ac +1 -1
- data/libxlsxwriter/third_party/minizip/crypt.h +13 -16
- data/libxlsxwriter/third_party/minizip/ioapi.c +31 -57
- data/libxlsxwriter/third_party/minizip/ioapi.h +31 -23
- data/libxlsxwriter/third_party/minizip/iowin32.c +29 -45
- data/libxlsxwriter/third_party/minizip/iowin32.h +4 -4
- data/libxlsxwriter/third_party/minizip/miniunz.c +29 -56
- data/libxlsxwriter/third_party/minizip/minizip.c +38 -49
- data/libxlsxwriter/third_party/minizip/mztools.c +1 -7
- data/libxlsxwriter/third_party/minizip/unzip.c +202 -342
- data/libxlsxwriter/third_party/minizip/unzip.h +74 -74
- data/libxlsxwriter/third_party/minizip/zip.c +165 -218
- data/libxlsxwriter/third_party/minizip/zip.h +164 -154
- data/libxlsxwriter/third_party/tmpfileplus/Makefile +3 -3
- data/libxlsxwriter/version.txt +1 -1
- data/test/auto_width_test.rb +20 -0
- data/test/default_format_test.rb +1 -1
- data/test/validations_test.rb +3 -3
- data/test/worksheet_test.rb +6 -1
- metadata +33 -7
- data/libxlsxwriter/.travis.yml +0 -37
|
@@ -47,6 +47,24 @@
|
|
|
47
47
|
# during configuration. This may produce bugs while cross-
|
|
48
48
|
# compiling or using MinGW/MSYS.
|
|
49
49
|
#
|
|
50
|
+
# USE_DTOA_LIBRARY
|
|
51
|
+
# Use the third party emyg_dtoa() library (default off). The
|
|
52
|
+
# emyg_dtoa() library is used to avoid sprintf double issues with
|
|
53
|
+
# different locale settings. To enable this library, pass
|
|
54
|
+
# `-DUSE_DTOA_LIBRARY=ON` during configuration.
|
|
55
|
+
#
|
|
56
|
+
# USE_NO_MD5
|
|
57
|
+
# Compile without third party MD5 support. This will turn off the
|
|
58
|
+
# functionality of avoiding duplicate image files in the output xlsx
|
|
59
|
+
# file. To enable this option pass `-DUSE_NO_MD5=ON` during
|
|
60
|
+
# configuration.
|
|
61
|
+
#
|
|
62
|
+
# USE_OPENSSL_MD5 Compile with OpenSSL MD5 support. This will link
|
|
63
|
+
# against libcrypto for MD5 support rather than using the local MD5
|
|
64
|
+
# support. MD5 support is required to avoid duplicate image files in
|
|
65
|
+
# the output xlsx file. To enable this option pass
|
|
66
|
+
# `-DUSE_OPENSSL_MD5=ON` during configuration.
|
|
67
|
+
#
|
|
50
68
|
# USE_STATIC_MSVC_RUNTIME
|
|
51
69
|
# Use the static msvc runtime library when compiling with msvc (default off)
|
|
52
70
|
# To enable, pass `-DUSE_STATIC_MSVC_RUNTIME` during configuration.
|
|
@@ -88,24 +106,39 @@ else()
|
|
|
88
106
|
cmake_minimum_required(VERSION 3.1)
|
|
89
107
|
endif()
|
|
90
108
|
|
|
91
|
-
SET(
|
|
109
|
+
SET(XLSX_PROJECT_NAME "xlsxwriter" CACHE STRING "Optional project and binary name")
|
|
92
110
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
|
93
|
-
project(${
|
|
111
|
+
project(${XLSX_PROJECT_NAME} C)
|
|
94
112
|
enable_testing()
|
|
95
113
|
|
|
114
|
+
# POLICY
|
|
115
|
+
# ------
|
|
116
|
+
|
|
117
|
+
# The use of the word ZLIB_ROOT should still work prior to "3.12.0",
|
|
118
|
+
# just it's been generalized for all packages now. Just set the policy
|
|
119
|
+
# to new, so we use it, and it will be used prior to 3.12 anyway.
|
|
120
|
+
if(${CMAKE_VERSION} VERSION_GREATER "3.12" OR ${CMAKE_VERSION} VERSION_EQUAL "3.12")
|
|
121
|
+
cmake_policy(SET CMP0074 NEW)
|
|
122
|
+
endif()
|
|
123
|
+
|
|
96
124
|
# OPTIONS
|
|
97
125
|
# -------
|
|
98
|
-
|
|
99
126
|
SET(ZLIB_ROOT "" CACHE STRING "Optional root for the ZLIB installation")
|
|
100
127
|
|
|
101
128
|
option(BUILD_TESTS "Build libxlsxwriter tests" OFF)
|
|
102
129
|
option(BUILD_EXAMPLES "Build libxlsxwriter examples" OFF)
|
|
103
130
|
option(USE_SYSTEM_MINIZIP "Use system minizip installation" OFF)
|
|
104
131
|
option(USE_STANDARD_TMPFILE "Use the C standard library's tmpfile()" OFF)
|
|
132
|
+
option(USE_NO_MD5 "Build libxlsxwriter without third party MD5 lib" OFF)
|
|
133
|
+
option(USE_OPENSSL_MD5 "Build libxlsxwriter with the OpenSSL MD5 lib" OFF)
|
|
134
|
+
option(USE_MEM_FILE "Use fmemopen()/open_memstream() in place of temporary files" OFF)
|
|
105
135
|
option(IOAPI_NO_64 "Disable 64-bit filesystem support" OFF)
|
|
136
|
+
option(USE_DTOA_LIBRARY "Use the locale independent third party Milo Yip DTOA library" OFF)
|
|
137
|
+
|
|
106
138
|
if(MSVC)
|
|
107
139
|
option(USE_STATIC_MSVC_RUNTIME "Use the static runtime library" OFF)
|
|
108
140
|
endif()
|
|
141
|
+
|
|
109
142
|
if(DEFINED ENV{${ZLIB_ROOT}})
|
|
110
143
|
set(ZLIB_ROOT $ENV{ZLIB_ROOT})
|
|
111
144
|
endif()
|
|
@@ -116,7 +149,6 @@ endif()
|
|
|
116
149
|
|
|
117
150
|
# CONFIGURATIONS
|
|
118
151
|
# --------------
|
|
119
|
-
|
|
120
152
|
if(USE_SYSTEM_MINIZIP)
|
|
121
153
|
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS USE_SYSTEM_MINIZIP)
|
|
122
154
|
endif()
|
|
@@ -125,6 +157,25 @@ if(USE_STANDARD_TMPFILE)
|
|
|
125
157
|
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS USE_STANDARD_TMPFILE)
|
|
126
158
|
endif()
|
|
127
159
|
|
|
160
|
+
if(NOT USE_OPENSSL_MD5 AND USE_NO_MD5)
|
|
161
|
+
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS USE_NO_MD5)
|
|
162
|
+
endif()
|
|
163
|
+
|
|
164
|
+
if(USE_OPENSSL_MD5)
|
|
165
|
+
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS USE_OPENSSL_MD5)
|
|
166
|
+
if(NOT MSVC)
|
|
167
|
+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations")
|
|
168
|
+
endif()
|
|
169
|
+
endif()
|
|
170
|
+
|
|
171
|
+
if(USE_MEM_FILE OR USE_FMEMOPEN)
|
|
172
|
+
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS USE_FMEMOPEN)
|
|
173
|
+
endif()
|
|
174
|
+
|
|
175
|
+
if(USE_DTOA_LIBRARY)
|
|
176
|
+
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS USE_DTOA_LIBRARY)
|
|
177
|
+
endif()
|
|
178
|
+
|
|
128
179
|
if(NOT BUILD_SHARED_LIBS)
|
|
129
180
|
if(UNIX)
|
|
130
181
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
@@ -132,15 +183,13 @@ if(NOT BUILD_SHARED_LIBS)
|
|
|
132
183
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static -static-libgcc -Wno-char-subscripts -Wno-long-long")
|
|
133
184
|
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS USE_FILE32API)
|
|
134
185
|
elseif(MSVC)
|
|
135
|
-
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /
|
|
136
|
-
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Ox /Zi /Fd${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pdb")
|
|
137
|
-
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /Zi /Fd${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pdb")
|
|
138
|
-
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /Fd${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pdb")
|
|
186
|
+
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /Fd\"${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pdb\"")
|
|
187
|
+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Ox /Zi /Fd\"${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pdb\"")
|
|
188
|
+
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /Zi /Fd\"${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pdb\"")
|
|
189
|
+
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /Fd\"${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pdb\"")
|
|
139
190
|
endif()
|
|
140
191
|
endif()
|
|
141
192
|
|
|
142
|
-
message(status "BEFORE: ${CMAKE_C_FLAGS_DEBUG}")
|
|
143
|
-
|
|
144
193
|
if(MSVC AND USE_STATIC_MSVC_RUNTIME)
|
|
145
194
|
foreach(flag_var CMAKE_C_FLAGS
|
|
146
195
|
CMAKE_C_FLAGS_DEBUG
|
|
@@ -153,33 +202,37 @@ if(MSVC AND USE_STATIC_MSVC_RUNTIME)
|
|
|
153
202
|
endforeach()
|
|
154
203
|
endif()
|
|
155
204
|
|
|
205
|
+
# Configure pkg-config
|
|
206
|
+
file(READ "include/xlsxwriter.h" ver)
|
|
207
|
+
|
|
208
|
+
string(REGEX MATCH "LXW_VERSION \"([^\"]+)\"" _ ${ver})
|
|
209
|
+
set(VERSION ${CMAKE_MATCH_1})
|
|
210
|
+
string(REGEX MATCH "LXW_SOVERSION \"([^\"]+)\"" _ ${ver})
|
|
211
|
+
set(SOVERSION ${CMAKE_MATCH_1})
|
|
212
|
+
set(PREFIX ${CMAKE_INSTALL_PREFIX})
|
|
213
|
+
|
|
214
|
+
configure_file(dev/release/pkg-config.txt xlsxwriter.pc @ONLY)
|
|
215
|
+
|
|
156
216
|
# INCLUDES
|
|
157
217
|
# --------
|
|
158
|
-
|
|
159
218
|
enable_language(CXX)
|
|
160
219
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
|
161
220
|
|
|
162
221
|
# ZLIB
|
|
163
|
-
find_package(ZLIB
|
|
222
|
+
find_package(ZLIB "1.0" REQUIRED)
|
|
164
223
|
list(APPEND LXW_PRIVATE_INCLUDE_DIRS ${ZLIB_INCLUDE_DIRS})
|
|
165
224
|
message("zlib version: " ${ZLIB_VERSION})
|
|
166
225
|
|
|
167
226
|
# MINIZIP
|
|
168
227
|
if (USE_SYSTEM_MINIZIP)
|
|
169
|
-
find_package(MINIZIP
|
|
228
|
+
find_package(MINIZIP "1.0" REQUIRED)
|
|
170
229
|
list(APPEND LXW_PRIVATE_INCLUDE_DIRS ${MINIZIP_INCLUDE_DIRS})
|
|
171
230
|
endif()
|
|
172
231
|
|
|
173
232
|
# LIBRARY
|
|
174
233
|
# -------
|
|
175
|
-
|
|
176
234
|
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS NOCRYPT NOUNCRYPT)
|
|
177
235
|
|
|
178
|
-
# Fix for modified zconf.h on Gentoo.
|
|
179
|
-
if(${CMAKE_HOST_SYSTEM} MATCHES gentoo)
|
|
180
|
-
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS OF=_Z_OF)
|
|
181
|
-
endif()
|
|
182
|
-
|
|
183
236
|
# Ensure CRT Secure warnings are disabled
|
|
184
237
|
if(MSVC)
|
|
185
238
|
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS _CRT_SECURE_NO_WARNINGS)
|
|
@@ -190,27 +243,64 @@ if(BUILD_TESTS)
|
|
|
190
243
|
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS TESTING)
|
|
191
244
|
endif()
|
|
192
245
|
|
|
246
|
+
# Define "LXW_BIG_ENDIAN" macro on big-endian architectures
|
|
247
|
+
include(TestBigEndian)
|
|
248
|
+
TEST_BIG_ENDIAN(LXW_TARGET_BIG_ENDIAN)
|
|
249
|
+
if(LXW_TARGET_BIG_ENDIAN)
|
|
250
|
+
list(APPEND LXW_PRIVATE_COMPILE_DEFINITIONS LXW_BIG_ENDIAN)
|
|
251
|
+
endif()
|
|
252
|
+
|
|
193
253
|
file(GLOB LXW_SOURCES src/*.c)
|
|
194
254
|
file(GLOB_RECURSE LXW_HEADERS RELATIVE include *.h)
|
|
255
|
+
|
|
195
256
|
if(NOT USE_SYSTEM_MINIZIP)
|
|
196
257
|
list(APPEND LXW_SOURCES third_party/minizip/ioapi.c third_party/minizip/zip.c)
|
|
197
258
|
if(MSVC)
|
|
198
259
|
list(APPEND LXW_SOURCES third_party/minizip/iowin32.c)
|
|
199
260
|
endif()
|
|
200
261
|
endif()
|
|
262
|
+
|
|
201
263
|
if (NOT USE_STANDARD_TMPFILE)
|
|
202
264
|
list(APPEND LXW_SOURCES third_party/tmpfileplus/tmpfileplus.c)
|
|
203
265
|
endif()
|
|
204
266
|
|
|
267
|
+
if(NOT USE_OPENSSL_MD5 AND NOT USE_NO_MD5)
|
|
268
|
+
list(APPEND LXW_SOURCES third_party/md5/md5.c)
|
|
269
|
+
endif()
|
|
270
|
+
|
|
271
|
+
if(USE_OPENSSL_MD5)
|
|
272
|
+
find_package(OpenSSL REQUIRED)
|
|
273
|
+
if(OpenSSL_FOUND)
|
|
274
|
+
include_directories(${OPENSSL_INCLUDE_DIR})
|
|
275
|
+
message(STATUS "OpenSSL version: ${OPENSSL_VERSION}")
|
|
276
|
+
endif()
|
|
277
|
+
endif()
|
|
278
|
+
|
|
279
|
+
if (USE_DTOA_LIBRARY)
|
|
280
|
+
list(APPEND LXW_SOURCES third_party/dtoa/emyg_dtoa.c)
|
|
281
|
+
endif()
|
|
282
|
+
|
|
205
283
|
set(LXW_PROJECT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
206
284
|
set(LXW_LIB_DIR "${LXW_PROJECT_DIR}/lib")
|
|
207
285
|
add_library(${PROJECT_NAME} "")
|
|
286
|
+
set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${SOVERSION})
|
|
208
287
|
target_sources(${PROJECT_NAME}
|
|
209
288
|
PRIVATE ${LXW_SOURCES}
|
|
210
289
|
PUBLIC ${LXW_HEADERS}
|
|
211
290
|
)
|
|
212
|
-
target_link_libraries(${PROJECT_NAME} LINK_PUBLIC ${ZLIB_LIBRARIES} ${MINIZIP_LIBRARIES})
|
|
291
|
+
target_link_libraries(${PROJECT_NAME} LINK_PUBLIC ${ZLIB_LIBRARIES} ${MINIZIP_LIBRARIES} ${LIB_CRYPTO} ${OPENSSL_CRYPTO_LIBRARY})
|
|
213
292
|
target_compile_definitions(${PROJECT_NAME} PRIVATE ${LXW_PRIVATE_COMPILE_DEFINITIONS})
|
|
293
|
+
|
|
294
|
+
# /utf-8 needs VS2015 Update 2 or above.
|
|
295
|
+
# In CMake 3.7 and above, we can use (MSVC_VERSION GREATER_EQUAL 1900) here.
|
|
296
|
+
if(MSVC AND NOT (MSVC_VERSION LESS 1900))
|
|
297
|
+
target_compile_options(${PROJECT_NAME} PRIVATE /utf-8)
|
|
298
|
+
endif()
|
|
299
|
+
|
|
300
|
+
if (WINDOWSSTORE)
|
|
301
|
+
target_compile_definitions(${PROJECT_NAME} PRIVATE -DIOWIN32_USING_WINRT_API)
|
|
302
|
+
endif()
|
|
303
|
+
|
|
214
304
|
target_include_directories(${PROJECT_NAME}
|
|
215
305
|
PRIVATE ${LXW_PRIVATE_INCLUDE_DIRS}
|
|
216
306
|
PUBLIC include include/xlsxwriter
|
|
@@ -225,6 +315,7 @@ target_include_directories(${PROJECT_NAME}
|
|
|
225
315
|
# sources Name of variable holding source files
|
|
226
316
|
# target Test name
|
|
227
317
|
#
|
|
318
|
+
|
|
228
319
|
macro(CreateTest sources target)
|
|
229
320
|
set(output_name xlsxwriter_${target})
|
|
230
321
|
set(dependencies ${output_name})
|
|
@@ -238,7 +329,6 @@ macro(CreateTest sources target)
|
|
|
238
329
|
)
|
|
239
330
|
endmacro(CreateTest)
|
|
240
331
|
|
|
241
|
-
|
|
242
332
|
file(GLOB LXW_UTILITY_SOURCES test/unit/utility/test*.c)
|
|
243
333
|
file(GLOB LXW_XMLWRITER_SOURCES test/unit/xmlwriter/test*.c)
|
|
244
334
|
file(GLOB LXW_WORKSHEET_SOURCES test/unit/worksheet/test*.c)
|
|
@@ -255,6 +345,8 @@ file(GLOB LXW_CHART_SOURCES test/unit/chart/test*.c)
|
|
|
255
345
|
file(GLOB LXW_CUSTOM_SOURCES test/unit/custom/test*.c)
|
|
256
346
|
file(GLOB LXW_FUNCTIONAL_SOURCES test/functional/src/*.c)
|
|
257
347
|
|
|
348
|
+
if(NOT MSVC)
|
|
349
|
+
# Skip unit tests on Windows since ctest.h doesn't support it.
|
|
258
350
|
set(LXW_UNIT_SOURCES
|
|
259
351
|
test/unit/test_all.c
|
|
260
352
|
${LXW_UTILITY_SOURCES}
|
|
@@ -272,25 +364,52 @@ set(LXW_UNIT_SOURCES
|
|
|
272
364
|
${LXW_CHART_SOURCES}
|
|
273
365
|
${LXW_CUSTOM_SOURCES}
|
|
274
366
|
)
|
|
367
|
+
else()
|
|
368
|
+
set(LXW_UNIT_SOURCES
|
|
369
|
+
test/cpp/test_compilation.cpp
|
|
370
|
+
)
|
|
371
|
+
endif()
|
|
275
372
|
|
|
276
373
|
if(BUILD_TESTS)
|
|
277
374
|
# unit tests
|
|
278
375
|
CreateTest(LXW_UNIT_SOURCES unit)
|
|
279
376
|
|
|
280
377
|
# functional tests
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
378
|
+
find_package(Python COMPONENTS Interpreter REQUIRED)
|
|
379
|
+
find_program(Pytest_EXECUTABLE NAMES pytest)
|
|
380
|
+
|
|
381
|
+
if (NOT Pytest_EXECUTABLE)
|
|
382
|
+
message("Please install the Python pytest library to run functional tests:")
|
|
383
|
+
message(" pip install pytest\n")
|
|
384
|
+
endif()
|
|
385
|
+
|
|
386
|
+
foreach(source ${LXW_FUNCTIONAL_SOURCES})
|
|
387
|
+
get_filename_component(basename ${source} NAME_WE)
|
|
388
|
+
add_executable(${basename} ${source})
|
|
389
|
+
target_link_libraries(${basename} xlsxwriter)
|
|
390
|
+
set_target_properties(${basename} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "test/functional/src")
|
|
391
|
+
endforeach(source)
|
|
392
|
+
|
|
393
|
+
add_custom_command(TARGET xlsxwriter_unit POST_BUILD
|
|
394
|
+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/test/functional test/functional
|
|
395
|
+
)
|
|
396
|
+
|
|
397
|
+
if(USE_NO_MD5)
|
|
398
|
+
add_test(NAME functional
|
|
399
|
+
COMMAND pytest -v test/functional -m "not skipif"
|
|
400
|
+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
401
|
+
)
|
|
402
|
+
else()
|
|
403
|
+
add_test(NAME functional
|
|
404
|
+
COMMAND pytest -v test/functional
|
|
405
|
+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
406
|
+
)
|
|
407
|
+
endif()
|
|
408
|
+
|
|
289
409
|
endif()
|
|
290
410
|
|
|
291
411
|
# EXAMPLES
|
|
292
412
|
# --------
|
|
293
|
-
|
|
294
413
|
file(GLOB LXW_EXAMPLE_SOURCES examples/*.c)
|
|
295
414
|
|
|
296
415
|
if(BUILD_EXAMPLES)
|
|
@@ -298,41 +417,22 @@ if(BUILD_EXAMPLES)
|
|
|
298
417
|
get_filename_component(basename ${source} NAME_WE)
|
|
299
418
|
add_executable(${basename} ${source})
|
|
300
419
|
target_link_libraries(${basename} ${PROJECT_NAME})
|
|
420
|
+
set_target_properties(${basename} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "examples")
|
|
301
421
|
endforeach(source)
|
|
302
422
|
endif()
|
|
303
423
|
|
|
304
424
|
# INSTALL
|
|
305
425
|
# -------
|
|
306
|
-
|
|
307
426
|
include(GNUInstallDirs)
|
|
308
427
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
endif()
|
|
315
|
-
|
|
316
|
-
install(TARGETS ${PROJECT_NAME}
|
|
317
|
-
LIBRARY DESTINATION "lib/${MSVC_FOLDER_PREFIX}/\${CMAKE_INSTALL_CONFIG_NAME}"
|
|
318
|
-
ARCHIVE DESTINATION "lib/${MSVC_FOLDER_PREFIX}/\${CMAKE_INSTALL_CONFIG_NAME}"
|
|
319
|
-
RUNTIME DESTINATION "bin/${MSVC_FOLDER_PREFIX}/\${CMAKE_INSTALL_CONFIG_NAME}"
|
|
320
|
-
)
|
|
321
|
-
if (NOT BUILD_SHARED_LIBS)
|
|
322
|
-
install(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pdb
|
|
323
|
-
DESTINATION "lib/${MSVC_FOLDER_PREFIX}/\${CMAKE_INSTALL_CONFIG_NAME}"
|
|
324
|
-
)
|
|
325
|
-
endif()
|
|
326
|
-
|
|
327
|
-
else(MSVC)
|
|
328
|
-
install(TARGETS ${PROJECT_NAME}
|
|
329
|
-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
330
|
-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
331
|
-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
332
|
-
)
|
|
333
|
-
endif(MSVC)
|
|
428
|
+
install(TARGETS ${PROJECT_NAME}
|
|
429
|
+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
430
|
+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
431
|
+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
432
|
+
)
|
|
334
433
|
install(FILES include/xlsxwriter.h DESTINATION include)
|
|
335
434
|
install(DIRECTORY include/xlsxwriter
|
|
336
435
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
337
436
|
FILES_MATCHING PATTERN "*.h"
|
|
338
437
|
)
|
|
438
|
+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/xlsxwriter.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
|
@@ -181,9 +181,9 @@ If you have `valgrind` installed you can use the test suite to check for memory
|
|
|
181
181
|
```
|
|
182
182
|
|
|
183
183
|
When you push your changes they will also be tested automatically using
|
|
184
|
-
[
|
|
184
|
+
[GitHub Actions][actions].
|
|
185
185
|
|
|
186
|
-
[
|
|
186
|
+
[actions]: https://github.com/jmcnamara/libxlsxwriter/actions
|
|
187
187
|
[pytest]: http://pytest.org/
|
|
188
188
|
|
|
189
189
|
|