xref: /aosp_15_r20/external/pcre/cmake/pcre2-config.cmake.in (revision 22dc650d8ae982c6770746019a6f94af92b0f024)
1*22dc650dSSadaf Ebrahimi# pcre2-config.cmake
2*22dc650dSSadaf Ebrahimi# ----------------
3*22dc650dSSadaf Ebrahimi#
4*22dc650dSSadaf Ebrahimi# Finds the PCRE2 library, specify the starting search path in PCRE2_ROOT.
5*22dc650dSSadaf Ebrahimi#
6*22dc650dSSadaf Ebrahimi# Static vs. shared
7*22dc650dSSadaf Ebrahimi# -----------------
8*22dc650dSSadaf Ebrahimi# To make use of the static library instead of the shared one, one needs
9*22dc650dSSadaf Ebrahimi# to set the variable PCRE2_USE_STATIC_LIBS to ON before calling find_package.
10*22dc650dSSadaf Ebrahimi# Example:
11*22dc650dSSadaf Ebrahimi#   set(PCRE2_USE_STATIC_LIBS ON)
12*22dc650dSSadaf Ebrahimi#   find_package(PCRE2 CONFIG COMPONENTS 8BIT)
13*22dc650dSSadaf Ebrahimi#
14*22dc650dSSadaf Ebrahimi# This will define the following variables:
15*22dc650dSSadaf Ebrahimi#
16*22dc650dSSadaf Ebrahimi#   PCRE2_FOUND   - True if the system has the PCRE2 library.
17*22dc650dSSadaf Ebrahimi#   PCRE2_VERSION - The version of the PCRE2 library which was found.
18*22dc650dSSadaf Ebrahimi#
19*22dc650dSSadaf Ebrahimi# and the following imported targets:
20*22dc650dSSadaf Ebrahimi#
21*22dc650dSSadaf Ebrahimi#   PCRE2::8BIT  - The 8 bit PCRE2 library.
22*22dc650dSSadaf Ebrahimi#   PCRE2::16BIT - The 16 bit PCRE2 library.
23*22dc650dSSadaf Ebrahimi#   PCRE2::32BIT - The 32 bit PCRE2 library.
24*22dc650dSSadaf Ebrahimi#   PCRE2::POSIX - The POSIX PCRE2 library.
25*22dc650dSSadaf Ebrahimi
26*22dc650dSSadaf Ebrahimiset(PCRE2_NON_STANDARD_LIB_PREFIX @NON_STANDARD_LIB_PREFIX@)
27*22dc650dSSadaf Ebrahimiset(PCRE2_NON_STANDARD_LIB_SUFFIX @NON_STANDARD_LIB_SUFFIX@)
28*22dc650dSSadaf Ebrahimiset(PCRE2_8BIT_NAME pcre2-8)
29*22dc650dSSadaf Ebrahimiset(PCRE2_16BIT_NAME pcre2-16)
30*22dc650dSSadaf Ebrahimiset(PCRE2_32BIT_NAME pcre2-32)
31*22dc650dSSadaf Ebrahimiset(PCRE2_POSIX_NAME pcre2-posix)
32*22dc650dSSadaf Ebrahimifind_path(PCRE2_INCLUDE_DIR NAMES pcre2.h DOC "PCRE2 include directory")
33*22dc650dSSadaf Ebrahimiif (PCRE2_USE_STATIC_LIBS)
34*22dc650dSSadaf Ebrahimi  if (MSVC)
35*22dc650dSSadaf Ebrahimi    set(PCRE2_8BIT_NAME pcre2-8-static)
36*22dc650dSSadaf Ebrahimi    set(PCRE2_16BIT_NAME pcre2-16-static)
37*22dc650dSSadaf Ebrahimi    set(PCRE2_32BIT_NAME pcre2-32-static)
38*22dc650dSSadaf Ebrahimi    set(PCRE2_POSIX_NAME pcre2-posix-static)
39*22dc650dSSadaf Ebrahimi  endif ()
40*22dc650dSSadaf Ebrahimi
41*22dc650dSSadaf Ebrahimi  set(PCRE2_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX})
42*22dc650dSSadaf Ebrahimi  set(PCRE2_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
43*22dc650dSSadaf Ebrahimielse ()
44*22dc650dSSadaf Ebrahimi  set(PCRE2_PREFIX ${CMAKE_SHARED_LIBRARY_PREFIX})
45*22dc650dSSadaf Ebrahimi  if (MINGW AND PCRE2_NON_STANDARD_LIB_PREFIX)
46*22dc650dSSadaf Ebrahimi    set(PCRE2_PREFIX "")
47*22dc650dSSadaf Ebrahimi  endif ()
48*22dc650dSSadaf Ebrahimi
49*22dc650dSSadaf Ebrahimi  set(PCRE2_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
50*22dc650dSSadaf Ebrahimi  if (MINGW AND PCRE2_NON_STANDARD_LIB_SUFFIX)
51*22dc650dSSadaf Ebrahimi    set(PCRE2_SUFFIX "-0.dll")
52*22dc650dSSadaf Ebrahimi  elseif(MSVC)
53*22dc650dSSadaf Ebrahimi    set(PCRE2_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
54*22dc650dSSadaf Ebrahimi  endif ()
55*22dc650dSSadaf Ebrahimiendif ()
56*22dc650dSSadaf Ebrahimifind_library(PCRE2_8BIT_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_8BIT_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_8BIT_NAME}d${PCRE2_SUFFIX} DOC "8 bit PCRE2 library")
57*22dc650dSSadaf Ebrahimifind_library(PCRE2_16BIT_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_16BIT_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_16BIT_NAME}d${PCRE2_SUFFIX} DOC "16 bit PCRE2 library")
58*22dc650dSSadaf Ebrahimifind_library(PCRE2_32BIT_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_32BIT_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_32BIT_NAME}d${PCRE2_SUFFIX} DOC "32 bit PCRE2 library")
59*22dc650dSSadaf Ebrahimifind_library(PCRE2_POSIX_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_POSIX_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_POSIX_NAME}d${PCRE2_SUFFIX} DOC "8 bit POSIX PCRE2 library")
60*22dc650dSSadaf Ebrahimiunset(PCRE2_NON_STANDARD_LIB_PREFIX)
61*22dc650dSSadaf Ebrahimiunset(PCRE2_NON_STANDARD_LIB_SUFFIX)
62*22dc650dSSadaf Ebrahimiunset(PCRE2_8BIT_NAME)
63*22dc650dSSadaf Ebrahimiunset(PCRE2_16BIT_NAME)
64*22dc650dSSadaf Ebrahimiunset(PCRE2_32BIT_NAME)
65*22dc650dSSadaf Ebrahimiunset(PCRE2_POSIX_NAME)
66*22dc650dSSadaf Ebrahimi
67*22dc650dSSadaf Ebrahimi# Set version
68*22dc650dSSadaf Ebrahimiif (PCRE2_INCLUDE_DIR)
69*22dc650dSSadaf Ebrahimi  set(PCRE2_VERSION "@PCRE2_MAJOR@.@[email protected]")
70*22dc650dSSadaf Ebrahimiendif ()
71*22dc650dSSadaf Ebrahimi
72*22dc650dSSadaf Ebrahimi# Which components have been found.
73*22dc650dSSadaf Ebrahimiif (PCRE2_8BIT_LIBRARY)
74*22dc650dSSadaf Ebrahimi  set(PCRE2_8BIT_FOUND TRUE)
75*22dc650dSSadaf Ebrahimiendif ()
76*22dc650dSSadaf Ebrahimiif (PCRE2_16BIT_LIBRARY)
77*22dc650dSSadaf Ebrahimi  set(PCRE2_16BIT_FOUND TRUE)
78*22dc650dSSadaf Ebrahimiendif ()
79*22dc650dSSadaf Ebrahimiif (PCRE2_32BIT_LIBRARY)
80*22dc650dSSadaf Ebrahimi  set(PCRE2_32BIT_FOUND TRUE)
81*22dc650dSSadaf Ebrahimiendif ()
82*22dc650dSSadaf Ebrahimiif (PCRE2_POSIX_LIBRARY)
83*22dc650dSSadaf Ebrahimi  set(PCRE2_POSIX_FOUND TRUE)
84*22dc650dSSadaf Ebrahimiendif ()
85*22dc650dSSadaf Ebrahimi
86*22dc650dSSadaf Ebrahimi# Check if at least one component has been specified.
87*22dc650dSSadaf Ebrahimilist(LENGTH PCRE2_FIND_COMPONENTS PCRE2_NCOMPONENTS)
88*22dc650dSSadaf Ebrahimiif (PCRE2_NCOMPONENTS LESS 1)
89*22dc650dSSadaf Ebrahimi  message(FATAL_ERROR "No components have been specified. This is not allowed. Please, specify at least one component.")
90*22dc650dSSadaf Ebrahimiendif ()
91*22dc650dSSadaf Ebrahimiunset(PCRE2_NCOMPONENTS)
92*22dc650dSSadaf Ebrahimi
93*22dc650dSSadaf Ebrahimi# When POSIX component has been specified make sure that also 8BIT component is specified.
94*22dc650dSSadaf Ebrahimiset(PCRE2_8BIT_COMPONENT FALSE)
95*22dc650dSSadaf Ebrahimiset(PCRE2_POSIX_COMPONENT FALSE)
96*22dc650dSSadaf Ebrahimiforeach(component ${PCRE2_FIND_COMPONENTS})
97*22dc650dSSadaf Ebrahimi  if (component STREQUAL "8BIT")
98*22dc650dSSadaf Ebrahimi    set(PCRE2_8BIT_COMPONENT TRUE)
99*22dc650dSSadaf Ebrahimi  elseif (component STREQUAL "POSIX")
100*22dc650dSSadaf Ebrahimi    set(PCRE2_POSIX_COMPONENT TRUE)
101*22dc650dSSadaf Ebrahimi  endif ()
102*22dc650dSSadaf Ebrahimiendforeach()
103*22dc650dSSadaf Ebrahimi
104*22dc650dSSadaf Ebrahimiif (PCRE2_POSIX_COMPONENT AND NOT PCRE2_8BIT_COMPONENT)
105*22dc650dSSadaf Ebrahimi  message(FATAL_ERROR "The component POSIX is specified while the 8BIT one is not. This is not allowed. Please, also specify the 8BIT component.")
106*22dc650dSSadaf Ebrahimiendif()
107*22dc650dSSadaf Ebrahimiunset(PCRE2_8BIT_COMPONENT)
108*22dc650dSSadaf Ebrahimiunset(PCRE2_POSIX_COMPONENT)
109*22dc650dSSadaf Ebrahimi
110*22dc650dSSadaf Ebrahimiinclude(FindPackageHandleStandardArgs)
111*22dc650dSSadaf Ebrahimiset(${CMAKE_FIND_PACKAGE_NAME}_CONFIG "${CMAKE_CURRENT_LIST_FILE}")
112*22dc650dSSadaf Ebrahimifind_package_handle_standard_args(PCRE2
113*22dc650dSSadaf Ebrahimi  FOUND_VAR PCRE2_FOUND
114*22dc650dSSadaf Ebrahimi  REQUIRED_VARS PCRE2_INCLUDE_DIR
115*22dc650dSSadaf Ebrahimi  HANDLE_COMPONENTS
116*22dc650dSSadaf Ebrahimi  VERSION_VAR PCRE2_VERSION
117*22dc650dSSadaf Ebrahimi  CONFIG_MODE
118*22dc650dSSadaf Ebrahimi)
119*22dc650dSSadaf Ebrahimi
120*22dc650dSSadaf Ebrahimiset(PCRE2_LIBRARIES)
121*22dc650dSSadaf Ebrahimiif (PCRE2_FOUND)
122*22dc650dSSadaf Ebrahimi  foreach(component ${PCRE2_FIND_COMPONENTS})
123*22dc650dSSadaf Ebrahimi    if (PCRE2_USE_STATIC_LIBS)
124*22dc650dSSadaf Ebrahimi      add_library(PCRE2::${component} STATIC IMPORTED)
125*22dc650dSSadaf Ebrahimi      target_compile_definitions(PCRE2::${component} INTERFACE PCRE2_STATIC)
126*22dc650dSSadaf Ebrahimi    else ()
127*22dc650dSSadaf Ebrahimi      add_library(PCRE2::${component} SHARED IMPORTED)
128*22dc650dSSadaf Ebrahimi    endif ()
129*22dc650dSSadaf Ebrahimi    set_target_properties(PCRE2::${component} PROPERTIES
130*22dc650dSSadaf Ebrahimi      IMPORTED_LOCATION "${PCRE2_${component}_LIBRARY}"
131*22dc650dSSadaf Ebrahimi      IMPORTED_IMPLIB "${PCRE2_${component}_LIBRARY}"
132*22dc650dSSadaf Ebrahimi      INTERFACE_INCLUDE_DIRECTORIES "${PCRE2_INCLUDE_DIR}"
133*22dc650dSSadaf Ebrahimi    )
134*22dc650dSSadaf Ebrahimi    if (component STREQUAL "POSIX")
135*22dc650dSSadaf Ebrahimi      set_target_properties(PCRE2::${component} PROPERTIES
136*22dc650dSSadaf Ebrahimi        INTERFACE_LINK_LIBRARIES "PCRE2::8BIT"
137*22dc650dSSadaf Ebrahimi        LINK_LIBRARIES "PCRE2::8BIT"
138*22dc650dSSadaf Ebrahimi      )
139*22dc650dSSadaf Ebrahimi    endif ()
140*22dc650dSSadaf Ebrahimi
141*22dc650dSSadaf Ebrahimi    set(PCRE2_LIBRARIES ${PCRE2_LIBRARIES} ${PCRE2_${component}_LIBRARY})
142*22dc650dSSadaf Ebrahimi    mark_as_advanced(PCRE2_${component}_LIBRARY)
143*22dc650dSSadaf Ebrahimi  endforeach()
144*22dc650dSSadaf Ebrahimiendif ()
145*22dc650dSSadaf Ebrahimi
146*22dc650dSSadaf Ebrahimimark_as_advanced(
147*22dc650dSSadaf Ebrahimi  PCRE2_INCLUDE_DIR
148*22dc650dSSadaf Ebrahimi)
149