forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			146 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
		
		
			
		
	
	
			146 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| 
								 | 
							
								# pcre2-config.cmake
							 | 
						||
| 
								 | 
							
								# ----------------
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Finds the PCRE2 library, specify the starting search path in PCRE2_ROOT.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Static vs. shared
							 | 
						||
| 
								 | 
							
								# -----------------
							 | 
						||
| 
								 | 
							
								# To make use of the static library instead of the shared one, one needs
							 | 
						||
| 
								 | 
							
								# to set the variable PCRE2_USE_STATIC_LIBS to ON before calling find_package.
							 | 
						||
| 
								 | 
							
								# Example:
							 | 
						||
| 
								 | 
							
								#   set(PCRE2_USE_STATIC_LIBS ON)
							 | 
						||
| 
								 | 
							
								#   find_package(PCRE2 CONFIG COMPONENTS 8BIT)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# This will define the following variables:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   PCRE2_FOUND   - True if the system has the PCRE2 library.
							 | 
						||
| 
								 | 
							
								#   PCRE2_VERSION - The version of the PCRE2 library which was found.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# and the following imported targets:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   PCRE2::8BIT  - The 8 bit PCRE2 library.
							 | 
						||
| 
								 | 
							
								#   PCRE2::16BIT - The 16 bit PCRE2 library.
							 | 
						||
| 
								 | 
							
								#   PCRE2::32BIT - The 32 bit PCRE2 library.
							 | 
						||
| 
								 | 
							
								#   PCRE2::POSIX - The POSIX PCRE2 library.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(PCRE2_NON_STANDARD_LIB_PREFIX @NON_STANDARD_LIB_PREFIX@)
							 | 
						||
| 
								 | 
							
								set(PCRE2_NON_STANDARD_LIB_SUFFIX @NON_STANDARD_LIB_SUFFIX@)
							 | 
						||
| 
								 | 
							
								set(PCRE2_8BIT_NAME pcre2-8)
							 | 
						||
| 
								 | 
							
								set(PCRE2_16BIT_NAME pcre2-16)
							 | 
						||
| 
								 | 
							
								set(PCRE2_32BIT_NAME pcre2-32)
							 | 
						||
| 
								 | 
							
								set(PCRE2_POSIX_NAME pcre2-posix)
							 | 
						||
| 
								 | 
							
								find_path(PCRE2_INCLUDE_DIR NAMES pcre2.h DOC "PCRE2 include directory")
							 | 
						||
| 
								 | 
							
								if (PCRE2_USE_STATIC_LIBS)
							 | 
						||
| 
								 | 
							
								  if (MSVC)
							 | 
						||
| 
								 | 
							
								    set(PCRE2_8BIT_NAME pcre2-8-static)
							 | 
						||
| 
								 | 
							
								    set(PCRE2_16BIT_NAME pcre2-16-static)
							 | 
						||
| 
								 | 
							
								    set(PCRE2_32BIT_NAME pcre2-32-static)
							 | 
						||
| 
								 | 
							
								    set(PCRE2_POSIX_NAME pcre2-posix-static)
							 | 
						||
| 
								 | 
							
								  endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  set(PCRE2_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX})
							 | 
						||
| 
								 | 
							
								  set(PCRE2_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
							 | 
						||
| 
								 | 
							
								else ()
							 | 
						||
| 
								 | 
							
								  set(PCRE2_PREFIX ${CMAKE_SHARED_LIBRARY_PREFIX})
							 | 
						||
| 
								 | 
							
								  if (MINGW AND PCRE2_NON_STANDARD_LIB_PREFIX)
							 | 
						||
| 
								 | 
							
								    set(PCRE2_PREFIX "")
							 | 
						||
| 
								 | 
							
								  endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  set(PCRE2_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
							 | 
						||
| 
								 | 
							
								  if (MINGW AND PCRE2_NON_STANDARD_LIB_SUFFIX)
							 | 
						||
| 
								 | 
							
								    set(PCRE2_SUFFIX "-0.dll")
							 | 
						||
| 
								 | 
							
								  endif ()
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								find_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")
							 | 
						||
| 
								 | 
							
								find_library(PCRE2_16BIT_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_16BIT_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_8BIT_NAME}d${PCRE2_SUFFIX} DOC "16 bit PCRE2 library")
							 | 
						||
| 
								 | 
							
								find_library(PCRE2_32BIT_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_32BIT_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_8BIT_NAME}d${PCRE2_SUFFIX} DOC "32 bit PCRE2 library")
							 | 
						||
| 
								 | 
							
								find_library(PCRE2_POSIX_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_POSIX_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_8BIT_NAME}d${PCRE2_SUFFIX} DOC "8 bit POSIX PCRE2 library")
							 | 
						||
| 
								 | 
							
								unset(PCRE2_NON_STANDARD_LIB_PREFIX)
							 | 
						||
| 
								 | 
							
								unset(PCRE2_NON_STANDARD_LIB_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PCRE2_8BIT_NAME)
							 | 
						||
| 
								 | 
							
								unset(PCRE2_16BIT_NAME)
							 | 
						||
| 
								 | 
							
								unset(PCRE2_32BIT_NAME)
							 | 
						||
| 
								 | 
							
								unset(PCRE2_POSIX_NAME)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Set version
							 | 
						||
| 
								 | 
							
								if (PCRE2_INCLUDE_DIR)
							 | 
						||
| 
								 | 
							
								  set(PCRE2_VERSION "@PCRE2_MAJOR@.@PCRE2_MINOR@.0")
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Which components have been found.
							 | 
						||
| 
								 | 
							
								if (PCRE2_8BIT_LIBRARY)
							 | 
						||
| 
								 | 
							
								  set(PCRE2_8BIT_FOUND TRUE)
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								if (PCRE2_16BIT_LIBRARY)
							 | 
						||
| 
								 | 
							
								  set(PCRE2_16BIT_FOUND TRUE)
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								if (PCRE2_32BIT_LIBRARY)
							 | 
						||
| 
								 | 
							
								  set(PCRE2_32BIT_FOUND TRUE)
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								if (PCRE2_POSIX_LIBRARY)
							 | 
						||
| 
								 | 
							
								  set(PCRE2_POSIX_FOUND TRUE)
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Check if at least one component has been specified.
							 | 
						||
| 
								 | 
							
								list(LENGTH PCRE2_FIND_COMPONENTS PCRE2_NCOMPONENTS)
							 | 
						||
| 
								 | 
							
								if (PCRE2_NCOMPONENTS LESS 1)
							 | 
						||
| 
								 | 
							
								  message(FATAL_ERROR "No components have been specified. This is not allowed. Please, specify at least one component.")
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								unset(PCRE2_NCOMPONENTS)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# When POSIX component has been specified make sure that also 8BIT component is specified.
							 | 
						||
| 
								 | 
							
								set(PCRE2_8BIT_COMPONENT FALSE)
							 | 
						||
| 
								 | 
							
								set(PCRE2_POSIX_COMPONENT FALSE)
							 | 
						||
| 
								 | 
							
								foreach(component ${PCRE2_FIND_COMPONENTS})
							 | 
						||
| 
								 | 
							
								  if (component STREQUAL "8BIT")
							 | 
						||
| 
								 | 
							
								    set(PCRE2_8BIT_COMPONENT TRUE)
							 | 
						||
| 
								 | 
							
								  elseif (component STREQUAL "POSIX")
							 | 
						||
| 
								 | 
							
								    set(PCRE2_POSIX_COMPONENT TRUE)
							 | 
						||
| 
								 | 
							
								  endif ()
							 | 
						||
| 
								 | 
							
								endforeach()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (PCRE2_POSIX_COMPONENT AND NOT PCRE2_8BIT_COMPONENT)
							 | 
						||
| 
								 | 
							
								  message(FATAL_ERROR "The component POSIX is specified while the 8BIT one is not. This is not allowed. Please, also specify the 8BIT component.")
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								unset(PCRE2_8BIT_COMPONENT)
							 | 
						||
| 
								 | 
							
								unset(PCRE2_POSIX_COMPONENT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								include(FindPackageHandleStandardArgs)
							 | 
						||
| 
								 | 
							
								set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG "${CMAKE_CURRENT_LIST_FILE}")
							 | 
						||
| 
								 | 
							
								find_package_handle_standard_args(PCRE2
							 | 
						||
| 
								 | 
							
								  FOUND_VAR PCRE2_FOUND
							 | 
						||
| 
								 | 
							
								  REQUIRED_VARS PCRE2_INCLUDE_DIR
							 | 
						||
| 
								 | 
							
								  HANDLE_COMPONENTS
							 | 
						||
| 
								 | 
							
								  VERSION_VAR PCRE2_VERSION
							 | 
						||
| 
								 | 
							
								  CONFIG_MODE
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(PCRE2_LIBRARIES)
							 | 
						||
| 
								 | 
							
								if (PCRE2_FOUND)
							 | 
						||
| 
								 | 
							
								  foreach(component ${PCRE2_FIND_COMPONENTS})
							 | 
						||
| 
								 | 
							
								    if (PCRE2_USE_STATIC_LIBS)
							 | 
						||
| 
								 | 
							
								      add_library(PCRE2::${component} STATIC IMPORTED)
							 | 
						||
| 
								 | 
							
								      target_compile_definitions(PCRE2::${component} INTERFACE PCRE2_STATIC)
							 | 
						||
| 
								 | 
							
								    else ()
							 | 
						||
| 
								 | 
							
								      add_library(PCRE2::${component} SHARED IMPORTED)
							 | 
						||
| 
								 | 
							
								    endif ()
							 | 
						||
| 
								 | 
							
								    set_target_properties(PCRE2::${component} PROPERTIES
							 | 
						||
| 
								 | 
							
								      IMPORTED_LOCATION "${PCRE2_${component}_LIBRARY}"
							 | 
						||
| 
								 | 
							
								      INTERFACE_INCLUDE_DIRECTORIES "${PCRE2_INCLUDE_DIR}"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    if (component STREQUAL "POSIX")
							 | 
						||
| 
								 | 
							
								      set_target_properties(PCRE2::${component} PROPERTIES
							 | 
						||
| 
								 | 
							
								        INTERFACE_LINK_LIBRARIES "PCRE2::8BIT"
							 | 
						||
| 
								 | 
							
								        LINK_LIBRARIES "PCRE2::8BIT"
							 | 
						||
| 
								 | 
							
								      )
							 | 
						||
| 
								 | 
							
								    endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    set(PCRE2_LIBRARIES ${PCRE2_LIBRARIES} ${PCRE2_${component}_LIBRARY})
							 | 
						||
| 
								 | 
							
								    mark_as_advanced(PCRE2_${component}_LIBRARY)
							 | 
						||
| 
								 | 
							
								  endforeach()
							 | 
						||
| 
								 | 
							
								endif ()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								mark_as_advanced(
							 | 
						||
| 
								 | 
							
								  PCRE2_INCLUDE_DIR
							 | 
						||
| 
								 | 
							
								)
							 |