Skip to content

Commit 8043151

Browse files
Berrysoftgitster
authored andcommitted
cmake: add pcre2 support
Fix one of the TODOs listed in the CMakeLists.txt by adding support for building with pcre2. As pcre2 doesn't provide cmake find module, we find it with pkgconf. This patch also works with vcpkg on Windows, with pkgconf and pcre2 installed. Pkgconf and pcre2 is detected automatically just like curl, expat and iconv. The output of CMake indicates whether pcre2 is found. Signed-off-by: Yuyi Wang <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent a561962 commit 8043151

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

contrib/buildsystems/CMakeLists.txt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ project(git
108108

109109
#TODO gitk git-gui gitweb
110110
#TODO Enable NLS on windows natively
111-
#TODO Add pcre support
112111

113112
#macros for parsing the Makefile for sources and scripts
114113
macro(parse_makefile_for_sources list_var regex)
@@ -160,6 +159,14 @@ if(NOT (WIN32 AND (CMAKE_C_COMPILER_ID STREQUAL "MSVC" OR CMAKE_C_COMPILER_ID ST
160159
find_package(Intl)
161160
endif()
162161

162+
find_package(PkgConfig)
163+
if(PkgConfig_FOUND)
164+
pkg_check_modules(PCRE2 libpcre2-8)
165+
if(PCRE2_FOUND)
166+
add_compile_definitions(USE_LIBPCRE2)
167+
endif()
168+
endif()
169+
163170
if(NOT Intl_FOUND)
164171
add_compile_definitions(NO_GETTEXT)
165172
if(NOT Iconv_FOUND)
@@ -180,6 +187,9 @@ endif()
180187
if(Intl_FOUND)
181188
include_directories(SYSTEM ${Intl_INCLUDE_DIRS})
182189
endif()
190+
if(PCRE2_FOUND)
191+
include_directories(SYSTEM ${PCRE2_INCLUDE_DIRS})
192+
endif()
183193

184194

185195
if(WIN32 AND NOT MSVC)#not required for visual studio builds
@@ -700,6 +710,10 @@ endif()
700710
if(Iconv_FOUND)
701711
target_link_libraries(common-main ${Iconv_LIBRARIES})
702712
endif()
713+
if(PCRE2_FOUND)
714+
target_link_libraries(common-main ${PCRE2_LIBRARIES})
715+
target_link_directories(common-main PUBLIC ${PCRE2_LIBRARY_DIRS})
716+
endif()
703717
if(WIN32)
704718
target_link_libraries(common-main ws2_32 ntdll ${CMAKE_BINARY_DIR}/git.res)
705719
add_dependencies(common-main git-rc)

0 commit comments

Comments
 (0)