@@ -20,6 +20,10 @@ if(POLICY CMP0135)
20
20
cmake_policy (SET CMP0135 NEW)
21
21
endif ()
22
22
23
+ if (POLICY CMP0169)
24
+ cmake_policy (SET CMP0169 OLD)
25
+ endif ()
26
+
23
27
function (ov_tokenizers_set_cxx_standard)
24
28
foreach (build_type "" "_DEBUG" "_MINSIZEREL" "_RELEASE" "_RELWITHDEBINFO" )
25
29
set (flag_var "CMAKE_CXX_FLAGS${build_type} " )
@@ -32,15 +36,15 @@ function(ov_tokenizers_set_cxx_standard)
32
36
set (CMAKE_CXX_STANDARD_REQUIRED ON PARENT_SCOPE)
33
37
endfunction ()
34
38
39
+ if (CMAKE_COMPILER_IS_GNUCXX)
40
+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0" )
41
+ set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0" )
42
+ endif ()
43
+
35
44
ov_tokenizers_set_cxx_standard()
36
45
37
46
set (CMAKE_POSITION_INDEPENDENT_CODE ON )
38
47
39
- if (WIN32 )
40
- # Set the runtime library globally
41
- set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
42
- endif ()
43
-
44
48
# openvino::runtime exports _GLIBCXX_USE_CXX11_ABI=0 on CentOS7.
45
49
# It needs to be propagated to every library openvino_tokenizers links with.
46
50
# That prohibits linkage with prebuilt libraries because they aren't compiled with _GLIBCXX_USE_CXX11_ABI=0.
@@ -50,7 +54,8 @@ if("_GLIBCXX_USE_CXX11_ABI=0" IN_LIST OPENVINO_RUNTIME_COMPILE_DEFINITIONS)
50
54
set (USE_ABI0 ON CACHE BOOL "Set -D_GLIBCXX_USE_CXX11_ABI to 0 for fast_tokenizers" )
51
55
endif ()
52
56
53
- option (BUILD_FAST_TOKENIZERS "Compile core_tokenizers instead of downloading prebuilt library. The option is forced to ON if _GLIBCXX_USE_CXX11_ABI=0" ${USE_ABI0} )
57
+ # The option is forced to ON if _GLIBCXX_USE_CXX11_ABI=0
58
+ cmake_dependent_option(BUILD_FAST_TOKENIZERS "Compile core_tokenizers instead of downloading prebuilt library" OFF "NOT USE_ABI0" ON )
54
59
55
60
#
56
61
# Compile flags
@@ -79,6 +84,11 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${c_cxx_flags}")
79
84
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${cxx_flags} ${c_cxx_flags} " )
80
85
set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${c_cxx_flags} " )
81
86
87
+ if (BUILD_FAST_TOKENIZERS)
88
+ # FastTokenizers use static MSVC runtime, hence we have to use it as well
89
+ set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
90
+ endif ()
91
+
82
92
#
83
93
# Dependencies
84
94
#
@@ -150,7 +160,6 @@ if(BUILD_FAST_TOKENIZERS)
150
160
set (EXTERNAL_PROJECT_SOURCE_DIR ${CMAKE_BINARY_DIR} /_deps/fast_tokenizer/src)
151
161
set (EXTERNAL_PROJECT_BINARY_DIR ${CMAKE_BINARY_DIR} /_deps/fast_tokenizer/build )
152
162
set (EXTERNAL_PROJECT_SUBBUILD_DIR ${CMAKE_BINARY_DIR} /_deps/fast_tokenizer/sub-build )
153
- set (WITH_PYTHON OFF CACHE BOOL "" )
154
163
155
164
FetchContent_Declare(
156
165
fast_tokenizer
@@ -194,6 +203,7 @@ else()
194
203
URL_HASH SHA256=1ae8ccfdb1066a731bba6ee0881baad5efd2cd661acd9569b689f2586e1a50e9
195
204
)
196
205
function (ov_tokenizers_build_static_re2)
206
+ set (CMAKE_POLICY_DEFAULT_CMP0077 NEW)
197
207
set (BUILD_SHARED_LIBS OFF )
198
208
FetchContent_GetProperties(re2)
199
209
if (NOT re2_POPULATED)
@@ -254,6 +264,28 @@ function(ov_tokenizers_link_fast_tokenizer)
254
264
target_link_libraries (${TARGET_NAME} PRIVATE ${FAST_TOKENIZER_LIBS} )
255
265
endfunction ()
256
266
267
+ function (ov_tokenizers_link_pcre2)
268
+ FetchContent_Declare(
269
+ prce2
270
+ URL https://github.com/PCRE2Project/pcre2/archive/refs/tags/pcre2-10.44.zip
271
+ URL_HASH SHA256=2d87bd1700bd1993ddea7c56aad2b0373ac2b3d52d9cc78842a6d061ffaf0925
272
+ )
273
+ FetchContent_GetProperties(prce2)
274
+ if (NOT prce2_POPULATED)
275
+ FetchContent_Populate(prce2)
276
+
277
+ set (CMAKE_POLICY_DEFAULT_CMP0077 NEW)
278
+ set (PCRE2_STATIC_PIC ON )
279
+ set (PCRE2_BUILD_TESTS OFF )
280
+
281
+ add_subdirectory (${prce2_SOURCE_DIR} ${prce2_BINARY_DIR} EXCLUDE_FROM_ALL )
282
+ endif ()
283
+
284
+ target_include_directories (${TARGET_NAME} PRIVATE ${pcre2_BINARY_DIR} )
285
+ target_link_libraries (${TARGET_NAME} PRIVATE pcre2-8)
286
+ target_compile_definitions (${TARGET_NAME} PRIVATE PCRE2_CODE_UNIT_WIDTH=8)
287
+ endfunction ()
288
+
257
289
#
258
290
# Build library
259
291
#
@@ -271,26 +303,14 @@ add_library(${TARGET_NAME} SHARED ${SRC})
271
303
272
304
ov_tokenizers_link_sentencepiece(${TARGET_NAME} )
273
305
ov_tokenizers_link_fast_tokenizer(${TARGET_NAME} )
306
+ ov_tokenizers_link_pcre2(${TARGET_NAME} )
274
307
275
308
string (REPLACE " " ";" extra_flags "${c_cxx_flags} ${cxx_flags} " )
276
309
set_target_properties (${TARGET_NAME} PROPERTIES COMPILE_OPTIONS "${extra_flags} " )
277
310
278
311
target_compile_definitions (${TARGET_NAME} PRIVATE IMPLEMENT_OPENVINO_EXTENSION_API)
279
312
target_link_libraries (${TARGET_NAME} PRIVATE openvino::runtime)
280
313
281
- # Fetch PCRE2
282
- include (FetchContent)
283
- FetchContent_Declare(
284
- PCRE2
285
- URL https://github.com/PCRE2Project/pcre2/archive/refs/tags/pcre2-10.44.zip
286
- URL_HASH SHA256=2d87bd1700bd1993ddea7c56aad2b0373ac2b3d52d9cc78842a6d061ffaf0925
287
- )
288
- FetchContent_MakeAvailable(PCRE2)
289
-
290
- target_include_directories (${TARGET_NAME} PRIVATE ${PCRE2_BINARY_DIR} )
291
- target_link_libraries (${TARGET_NAME} PRIVATE pcre2-8)
292
- target_compile_definitions (${TARGET_NAME} PRIVATE PCRE2_CODE_UNIT_WIDTH=8)
293
-
294
314
if (OpenVINO_Frontend_TensorFlow_FOUND)
295
315
target_link_libraries (${TARGET_NAME} PRIVATE openvino::frontend::tensorflow)
296
316
target_compile_definitions (${TARGET_NAME} PRIVATE OpenVINO_Frontend_TensorFlow_FOUND)
@@ -393,26 +413,11 @@ if(extra_libs)
393
413
install (FILES ${extra_libs} DESTINATION ${extra_libs_location} COMPONENT openvino_tokenizers)
394
414
endif ()
395
415
396
- install (FILES "${openvino_tokenizers_SOURCE_DIR} /LICENSE"
397
- "${openvino_tokenizers_SOURCE_DIR} /third-party-programs.txt"
398
- "${openvino_tokenizers_SOURCE_DIR} /SECURITY.md"
399
- DESTINATION "${PY_BUILD_CMAKE_PACKAGE_NAME} -${PY_BUILD_CMAKE_PACKAGE_VERSION} .dist-info"
400
- COMPONENT openvino_tokenizers_licenses
401
- EXCLUDE_FROM_ALL )
402
-
403
416
install (FILES "${openvino_tokenizers_SOURCE_DIR} /LICENSE"
404
417
"${openvino_tokenizers_SOURCE_DIR} /third-party-programs.txt"
405
418
"${openvino_tokenizers_SOURCE_DIR} /README.md"
406
419
DESTINATION "docs/openvino_tokenizers"
407
- COMPONENT openvino_tokenizers_docs
408
- EXCLUDE_FROM_ALL )
409
-
410
- configure_file ("${openvino_tokenizers_SOURCE_DIR} /cmake/templates/__version__.py.in"
411
- "${openvino_tokenizers_BINARY_DIR} /python/__version__.py" @ONLY)
412
- install (FILES "${openvino_tokenizers_BINARY_DIR} /python/__version__.py"
413
- DESTINATION "openvino_tokenizers"
414
- COMPONENT openvino_tokenizers_python
415
- EXCLUDE_FROM_ALL )
420
+ COMPONENT openvino_tokenizers_docs)
416
421
417
422
#
418
423
# Cpack configuration
0 commit comments