11767c5feSopenharmony_ci# Copyright (C) 2011 The Libphonenumber Authors
21767c5feSopenharmony_ci#
31767c5feSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
41767c5feSopenharmony_ci# you may not use this file except in compliance with the License.
51767c5feSopenharmony_ci# You may obtain a copy of the License at
61767c5feSopenharmony_ci#
71767c5feSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0
81767c5feSopenharmony_ci#
91767c5feSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
101767c5feSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
111767c5feSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121767c5feSopenharmony_ci# See the License for the specific language governing permissions and
131767c5feSopenharmony_ci# limitations under the License.
141767c5feSopenharmony_ci
151767c5feSopenharmony_ci# Author: Philippe Liard
161767c5feSopenharmony_ci
171767c5feSopenharmony_cicmake_minimum_required (VERSION 3.11)
181767c5feSopenharmony_ci
191767c5feSopenharmony_ciproject (libphonenumber VERSION 8.13.0)
201767c5feSopenharmony_ci
211767c5feSopenharmony_ciif (32BIT)
221767c5feSopenharmony_ci  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
231767c5feSopenharmony_ci  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
241767c5feSopenharmony_ci  set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m32")
251767c5feSopenharmony_ci  set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")
261767c5feSopenharmony_ciendif ()
271767c5feSopenharmony_ci
281767c5feSopenharmony_ci# Set out-of-tree tools directory
291767c5feSopenharmony_ciset (TOOLS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../tools/cpp")
301767c5feSopenharmony_ciset (TOOLS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/tools")
311767c5feSopenharmony_ci
321767c5feSopenharmony_ci# Helper functions dealing with finding libraries and programs this library
331767c5feSopenharmony_ci# depends on.
341767c5feSopenharmony_ci
351767c5feSopenharmony_ciinclude (FetchContent)
361767c5feSopenharmony_ciinclude (GNUInstallDirs)
371767c5feSopenharmony_ci
381767c5feSopenharmony_cifunction (print_error DESCRIPTION FILE)
391767c5feSopenharmony_ci  message (FATAL_ERROR
401767c5feSopenharmony_ci    "Can't find ${DESCRIPTION}: can't locate ${FILE}. Please read the README.")
411767c5feSopenharmony_ciendfunction ()
421767c5feSopenharmony_ci
431767c5feSopenharmony_ci# Find a library. If it has not been found, stop CMake with a fatal error
441767c5feSopenharmony_ci# message.
451767c5feSopenharmony_cifunction (find_required_library NAME HEADER LIBRARY DESCRIPTION)
461767c5feSopenharmony_ci  # Check the header.
471767c5feSopenharmony_ci  find_path (${NAME}_INCLUDE_DIR ${HEADER})
481767c5feSopenharmony_ci  set (INCLUDE_DIR ${${NAME}_INCLUDE_DIR})
491767c5feSopenharmony_ci
501767c5feSopenharmony_ci  if (${INCLUDE_DIR} STREQUAL "${INCLUDE_DIR}-NOTFOUND")
511767c5feSopenharmony_ci    print_error (${DESCRIPTION} ${HEADER})
521767c5feSopenharmony_ci  endif ()
531767c5feSopenharmony_ci  include_directories (${INCLUDE_DIR})
541767c5feSopenharmony_ci  # Check the binary.
551767c5feSopenharmony_ci  find_library (${NAME}_LIB ${LIBRARY})
561767c5feSopenharmony_ci  set (LIB ${NAME}_LIB)
571767c5feSopenharmony_ci
581767c5feSopenharmony_ci  if (${LIB} STREQUAL "${LIB}-NOTFOUND")
591767c5feSopenharmony_ci    print_error (${DESCRIPTION} ${LIBRARY})
601767c5feSopenharmony_ci  endif ()
611767c5feSopenharmony_ciendfunction (find_required_library)
621767c5feSopenharmony_ci
631767c5feSopenharmony_ci# Check the library version (if pkg-config available).
641767c5feSopenharmony_cifind_package (PkgConfig)
651767c5feSopenharmony_cifunction (check_library_version VARNAME LIBRARY_WITH_VERSION)
661767c5feSopenharmony_ci  if (PKG_CONFIG_FOUND)
671767c5feSopenharmony_ci    pkg_check_modules (${VARNAME} ${LIBRARY_WITH_VERSION})
681767c5feSopenharmony_ci  endif ()
691767c5feSopenharmony_ciendfunction ()
701767c5feSopenharmony_ci
711767c5feSopenharmony_ci# Find a program. If it has not been found, stop CMake with a fatal error
721767c5feSopenharmony_ci# message.
731767c5feSopenharmony_cifunction (find_required_program NAME FILENAME DESCRIPTION)
741767c5feSopenharmony_ci  find_program (${NAME}_BIN NAMES ${FILENAME})
751767c5feSopenharmony_ci
761767c5feSopenharmony_ci  if (${NAME}_BIN STREQUAL "${NAME}_BIN-NOTFOUND")
771767c5feSopenharmony_ci    print_error (${DESCRIPTION} ${FILENAME})
781767c5feSopenharmony_ci  endif ()
791767c5feSopenharmony_ciendfunction (find_required_program)
801767c5feSopenharmony_ci
811767c5feSopenharmony_ci# Options that can be passed to CMake using 'cmake -DKEY=VALUE'.
821767c5feSopenharmony_cioption (BUILD_GEOCODER "Build the offline phone number geocoder" ON)
831767c5feSopenharmony_cioption (REGENERATE_METADATA "Regenerate metadata instead of using it from the source tree" ON)
841767c5feSopenharmony_cioption (USE_ALTERNATE_FORMATS "Use alternate formats" ON)
851767c5feSopenharmony_cioption (USE_PROTOBUF_LITE "Link to protobuf-lite" OFF)
861767c5feSopenharmony_cioption (USE_BOOST "Use Boost" ON)
871767c5feSopenharmony_cioption (USE_ICU_REGEXP "Use ICU regexp engine" ON)
881767c5feSopenharmony_cioption (USE_LITE_METADATA "Use lite metadata" OFF)
891767c5feSopenharmony_cioption (USE_RE2 "Use RE2" OFF)
901767c5feSopenharmony_cioption (USE_STD_MAP "Force the use of std::map" OFF)
911767c5feSopenharmony_cioption (BUILD_STATIC_LIB "Build static libraries" ON)
921767c5feSopenharmony_cioption (BUILD_SHARED_LIBS "Build shared libraries" ON)
931767c5feSopenharmony_cioption (BUILD_TESTING "Build testing" ON)
941767c5feSopenharmony_cioption (BUILD_TOOLS_ONLY "Limit build to targets in ../tools/cpp" OFF)
951767c5feSopenharmony_cioption (USE_STDMUTEX "Use C++ 2011 std::mutex for multi-threading" OFF)
961767c5feSopenharmony_cioption (USE_POSIX_THREAD "Use Posix api for multi-threading" OFF)
971767c5feSopenharmony_ci
981767c5feSopenharmony_ciif (USE_ALTERNATE_FORMATS)
991767c5feSopenharmony_ci  add_definitions ("-DI18N_PHONENUMBERS_USE_ALTERNATE_FORMATS")
1001767c5feSopenharmony_ciendif ()
1011767c5feSopenharmony_ci
1021767c5feSopenharmony_ci# Find all the required libraries and programs.
1031767c5feSopenharmony_cifind_package(absl)
1041767c5feSopenharmony_ci
1051767c5feSopenharmony_ciif(NOT absl_FOUND)
1061767c5feSopenharmony_ci  # Overide abseil install rules for subprojects
1071767c5feSopenharmony_ci  set(ABSL_ENABLE_INSTALL ON)
1081767c5feSopenharmony_ci  
1091767c5feSopenharmony_ci  # Downloading the abseil sources at particular version to not catch up
1101767c5feSopenharmony_ci  # with its new build requirements like min C++14 is mandated in that lib.
1111767c5feSopenharmony_ci  FetchContent_Declare(
1121767c5feSopenharmony_ci      abseil-cpp
1131767c5feSopenharmony_ci      GIT_REPOSITORY  https://github.com/abseil/abseil-cpp.git
1141767c5feSopenharmony_ci      GIT_TAG         273292d
1151767c5feSopenharmony_ci  )
1161767c5feSopenharmony_ci
1171767c5feSopenharmony_ci  # Building the abseil binaries
1181767c5feSopenharmony_ci  FetchContent_GetProperties(abseil-cpp)
1191767c5feSopenharmony_ci  if (NOT abseil-cpp_POPULATED)
1201767c5feSopenharmony_ci      FetchContent_Populate(abseil-cpp)
1211767c5feSopenharmony_ci  endif ()
1221767c5feSopenharmony_ci
1231767c5feSopenharmony_ci  if (NOT abseil-cpp_POPULATED)
1241767c5feSopenharmony_ci     message (FATAL_ERROR "Could not build abseil-cpp binaries.")
1251767c5feSopenharmony_ci  endif ()
1261767c5feSopenharmony_ci
1271767c5feSopenharmony_ci  # Safeguarding against any potential link errors as mentioned in
1281767c5feSopenharmony_ci  # https://github.com/abseil/abseil-cpp/issues/225
1291767c5feSopenharmony_ci  set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
1301767c5feSopenharmony_ci  add_subdirectory(${abseil-cpp_SOURCE_DIR} ${abseil-cpp_BINARY_DIR})
1311767c5feSopenharmony_ciendif()
1321767c5feSopenharmony_ci
1331767c5feSopenharmony_ciif (BUILD_TESTING)
1341767c5feSopenharmony_ci  include (../tools/cpp/gtest.cmake)
1351767c5feSopenharmony_ci  find_or_build_gtest ()
1361767c5feSopenharmony_ciendif()
1371767c5feSopenharmony_ci
1381767c5feSopenharmony_ciif (BUILD_TOOLS_ONLY)
1391767c5feSopenharmony_ci  add_subdirectory("${TOOLS_DIR}" "${TOOLS_BINARY_DIR}")
1401767c5feSopenharmony_ci  return()
1411767c5feSopenharmony_ciendif()
1421767c5feSopenharmony_ci
1431767c5feSopenharmony_ciif (USE_BOOST)
1441767c5feSopenharmony_ci  add_definitions ("-DI18N_PHONENUMBERS_USE_BOOST")
1451767c5feSopenharmony_ci  if (WIN32)
1461767c5feSopenharmony_ci    set (Boost_USE_STATIC_LIBS ON)
1471767c5feSopenharmony_ci  endif ()
1481767c5feSopenharmony_ci  find_package (Boost 1.40.0 COMPONENTS date_time system thread)
1491767c5feSopenharmony_ci  if (NOT Boost_FOUND)
1501767c5feSopenharmony_ci    print_error ("Boost Date_Time/System/Thread" "Boost")
1511767c5feSopenharmony_ci  endif ()
1521767c5feSopenharmony_ci  include_directories (${Boost_INCLUDE_DIRS})
1531767c5feSopenharmony_ciendif ()
1541767c5feSopenharmony_ci
1551767c5feSopenharmony_ciif (USE_STDMUTEX)
1561767c5feSopenharmony_ci  add_definitions ("-DI18N_PHONENUMBERS_USE_STDMUTEX")
1571767c5feSopenharmony_ciendif ()
1581767c5feSopenharmony_ci
1591767c5feSopenharmony_ciif (USE_POSIX_THREAD)
1601767c5feSopenharmony_ci  add_definitions ("-DI18N_PHONENUMBERS_HAVE_POSIX_THREAD")
1611767c5feSopenharmony_ci  find_package (Threads REQUIRED)
1621767c5feSopenharmony_ciendif ()
1631767c5feSopenharmony_ci
1641767c5feSopenharmony_ciif ((NOT USE_BOOST) AND (NOT USE_STDMUTEX))
1651767c5feSopenharmony_ci  find_package (Threads)
1661767c5feSopenharmony_ciendif()
1671767c5feSopenharmony_ci
1681767c5feSopenharmony_ciif (USE_RE2)
1691767c5feSopenharmony_ci  find_required_library (RE2 re2/re2.h re2 "Google RE2")
1701767c5feSopenharmony_ciendif ()
1711767c5feSopenharmony_ci
1721767c5feSopenharmony_ciif (USE_PROTOBUF_LITE)
1731767c5feSopenharmony_ci  find_required_library (PROTOBUF google/protobuf/message_lite.h protobuf-lite
1741767c5feSopenharmony_ci                         "Google Protocol Buffers")
1751767c5feSopenharmony_ci  check_library_version (PC_PROTOBUF protobuf-lite>=2.4)
1761767c5feSopenharmony_cielse ()
1771767c5feSopenharmony_ci  find_required_library (PROTOBUF google/protobuf/message_lite.h protobuf
1781767c5feSopenharmony_ci                         "Google Protocol Buffers")
1791767c5feSopenharmony_ci  check_library_version (PC_PROTOBUF protobuf>=2.4)
1801767c5feSopenharmony_ciendif ()
1811767c5feSopenharmony_ci
1821767c5feSopenharmony_cifind_required_library (ICU_UC unicode/uchar.h icuuc "ICU")
1831767c5feSopenharmony_cicheck_library_version (PC_ICU_UC icu-uc>=4.4)
1841767c5feSopenharmony_ci
1851767c5feSopenharmony_ciset (ICU_INCLUDE_DIR ${ICU_UC_INCLUDE_DIR})
1861767c5feSopenharmony_ciset (ICU_LIB ${ICU_UC_LIB})
1871767c5feSopenharmony_ci# If ICU regexp engine is used or if the geocoder is built, use icui18n as well.
1881767c5feSopenharmony_ciif (USE_ICU_REGEXP OR BUILD_GEOCODER)
1891767c5feSopenharmony_ci  find_required_library (ICU_I18N unicode/regex.h icui18n "ICU")
1901767c5feSopenharmony_ci  check_library_version (PC_ICU_I18N icu-i18n>=4.4)
1911767c5feSopenharmony_ci  list (APPEND ICU_INCLUDE_DIR ${ICU_I18N_INCLUDE_DIR})
1921767c5feSopenharmony_ci  list (APPEND ICU_LIB ${ICU_I18N_LIB})
1931767c5feSopenharmony_ciendif ()
1941767c5feSopenharmony_ci
1951767c5feSopenharmony_cifind_required_program (PROTOC protoc
1961767c5feSopenharmony_ci                       "Google Protocol Buffers compiler (protoc)")
1971767c5feSopenharmony_ci
1981767c5feSopenharmony_ciif (REGENERATE_METADATA)
1991767c5feSopenharmony_ci  find_required_program (JAVA java
2001767c5feSopenharmony_ci                         "Java Runtime Environment")
2011767c5feSopenharmony_ciendif ()
2021767c5feSopenharmony_ci
2031767c5feSopenharmony_ciif (APPLE)
2041767c5feSopenharmony_ci  FIND_LIBRARY (COREFOUNDATION_LIB CoreFoundation)
2051767c5feSopenharmony_ci  FIND_LIBRARY (FOUNDATION_LIB Foundation)
2061767c5feSopenharmony_ci  set (CMAKE_MACOSX_RPATH OFF)
2071767c5feSopenharmony_ci  set (CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS
2081767c5feSopenharmony_ci    "${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS} -undefined dynamic_lookup")
2091767c5feSopenharmony_ciendif ()
2101767c5feSopenharmony_ci
2111767c5feSopenharmony_ciif (NOT USE_STD_MAP)
2121767c5feSopenharmony_ci  INCLUDE (CheckIncludeFileCXX)
2131767c5feSopenharmony_ci  CHECK_INCLUDE_FILE_CXX ("tr1/unordered_map" HAVE_CXX_TR1_UNORDERED_MAP)
2141767c5feSopenharmony_ci  if (HAVE_CXX_TR1_UNORDERED_MAP)
2151767c5feSopenharmony_ci    add_definitions ("-DI18N_PHONENUMBERS_USE_TR1_UNORDERED_MAP")
2161767c5feSopenharmony_ci  endif ()
2171767c5feSopenharmony_ciendif ()
2181767c5feSopenharmony_ci
2191767c5feSopenharmony_ci# Add protoc (Protocol Buffers compiler) target.
2201767c5feSopenharmony_ciset (RESOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../resources")
2211767c5feSopenharmony_ci
2221767c5feSopenharmony_ciset (
2231767c5feSopenharmony_ci  PROTOBUF_SOURCES "${RESOURCES_DIR}/phonemetadata.proto"
2241767c5feSopenharmony_ci                   "${RESOURCES_DIR}/phonenumber.proto"
2251767c5feSopenharmony_ci)
2261767c5feSopenharmony_ci
2271767c5feSopenharmony_ciset (
2281767c5feSopenharmony_ci  PROTOBUF_OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/phonenumbers/phonemetadata.pb.cc"
2291767c5feSopenharmony_ci                  "${CMAKE_CURRENT_SOURCE_DIR}/src/phonenumbers/phonemetadata.pb.h"
2301767c5feSopenharmony_ci                  "${CMAKE_CURRENT_SOURCE_DIR}/src/phonenumbers/phonenumber.pb.cc"
2311767c5feSopenharmony_ci                  "${CMAKE_CURRENT_SOURCE_DIR}/src/phonenumbers/phonenumber.pb.h"
2321767c5feSopenharmony_ci)
2331767c5feSopenharmony_ci
2341767c5feSopenharmony_ciadd_custom_command (
2351767c5feSopenharmony_ci  COMMAND ${PROTOC_BIN} --cpp_out=${CMAKE_CURRENT_SOURCE_DIR}/src/phonenumbers/
2361767c5feSopenharmony_ci    --proto_path=${RESOURCES_DIR} ${PROTOBUF_SOURCES}
2371767c5feSopenharmony_ci
2381767c5feSopenharmony_ci  OUTPUT ${PROTOBUF_OUTPUT}
2391767c5feSopenharmony_ci  DEPENDS ${PROTOBUF_SOURCES}
2401767c5feSopenharmony_ci)
2411767c5feSopenharmony_ci
2421767c5feSopenharmony_ciif (BUILD_GEOCODER)
2431767c5feSopenharmony_ci  # Geocoding data cpp file generation
2441767c5feSopenharmony_ci  add_subdirectory("${TOOLS_DIR}" "${TOOLS_BINARY_DIR}")
2451767c5feSopenharmony_ci
2461767c5feSopenharmony_ci  set (GEOCODING_DIR "${RESOURCES_DIR}/geocoding")
2471767c5feSopenharmony_ci  file (GLOB_RECURSE GEOCODING_SOURCES "${GEOCODING_DIR}/*.txt")
2481767c5feSopenharmony_ci
2491767c5feSopenharmony_ci  set (GEOCODING_DATA_OUTPUT
2501767c5feSopenharmony_ci    "${CMAKE_CURRENT_SOURCE_DIR}/src/phonenumbers/geocoding/geocoding_data.cc"
2511767c5feSopenharmony_ci  )
2521767c5feSopenharmony_ci
2531767c5feSopenharmony_ci  add_custom_command (
2541767c5feSopenharmony_ci    COMMAND generate_geocoding_data "${GEOCODING_DIR}"
2551767c5feSopenharmony_ci      "${GEOCODING_DATA_OUTPUT}"
2561767c5feSopenharmony_ci
2571767c5feSopenharmony_ci    OUTPUT ${GEOCODING_DATA_OUTPUT}
2581767c5feSopenharmony_ci    DEPENDS ${GEOCODING_SOURCES}
2591767c5feSopenharmony_ci            generate_geocoding_data
2601767c5feSopenharmony_ci    COMMENT "Generating geocoding data code"
2611767c5feSopenharmony_ci  )
2621767c5feSopenharmony_ciendif ()
2631767c5feSopenharmony_ci
2641767c5feSopenharmony_ciset (
2651767c5feSopenharmony_ci  SOURCES
2661767c5feSopenharmony_ci  "src/phonenumbers/asyoutypeformatter.cc"
2671767c5feSopenharmony_ci  "src/phonenumbers/base/strings/string_piece.cc"
2681767c5feSopenharmony_ci  "src/phonenumbers/default_logger.cc"
2691767c5feSopenharmony_ci  "src/phonenumbers/logger.cc"
2701767c5feSopenharmony_ci  "src/phonenumbers/phonemetadata.pb.cc" # Generated by Protocol Buffers.
2711767c5feSopenharmony_ci  "src/phonenumbers/phonenumber.cc"
2721767c5feSopenharmony_ci  "src/phonenumbers/phonenumber.pb.cc"   # Generated by Protocol Buffers.
2731767c5feSopenharmony_ci  "src/phonenumbers/phonenumberutil.cc"
2741767c5feSopenharmony_ci  "src/phonenumbers/regex_based_matcher.cc"
2751767c5feSopenharmony_ci  "src/phonenumbers/regexp_cache.cc"
2761767c5feSopenharmony_ci  "src/phonenumbers/shortnumberinfo.cc"
2771767c5feSopenharmony_ci  "src/phonenumbers/string_byte_sink.cc"
2781767c5feSopenharmony_ci  "src/phonenumbers/stringutil.cc"
2791767c5feSopenharmony_ci  "src/phonenumbers/unicodestring.cc"
2801767c5feSopenharmony_ci  "src/phonenumbers/utf/rune.c"
2811767c5feSopenharmony_ci  "src/phonenumbers/utf/unicodetext.cc"
2821767c5feSopenharmony_ci  "src/phonenumbers/utf/unilib.cc"
2831767c5feSopenharmony_ci)
2841767c5feSopenharmony_ci
2851767c5feSopenharmony_ciif (BUILD_GEOCODER)
2861767c5feSopenharmony_ci  set (
2871767c5feSopenharmony_ci    GEOCODING_SOURCES
2881767c5feSopenharmony_ci    "src/phonenumbers/geocoding/area_code_map.cc"
2891767c5feSopenharmony_ci    "src/phonenumbers/geocoding/default_map_storage.cc"
2901767c5feSopenharmony_ci    "src/phonenumbers/geocoding/geocoding_data.cc"
2911767c5feSopenharmony_ci    "src/phonenumbers/geocoding/mapping_file_provider.cc"
2921767c5feSopenharmony_ci    "src/phonenumbers/geocoding/phonenumber_offline_geocoder.cc"
2931767c5feSopenharmony_ci    "src/phonenumbers/phonenumber.pb.h"  # Forces proto buffer generation.
2941767c5feSopenharmony_ci  )
2951767c5feSopenharmony_ciendif ()
2961767c5feSopenharmony_ci
2971767c5feSopenharmony_ci# Add regexp engine-dependent sources. ICU is used by default.
2981767c5feSopenharmony_ciif (USE_RE2)
2991767c5feSopenharmony_ci  # Add a flag to select the right regexp factory implementation used by
3001767c5feSopenharmony_ci  # regexp_factory.h and regexp_adapter_test.cc.
3011767c5feSopenharmony_ci  # When both ICU regexp and RE2 are defined, the regexp engine adapter defaults
3021767c5feSopenharmony_ci  # to RE2 unless the ICU implementation is instantiated explictly obviously.
3031767c5feSopenharmony_ci  add_definitions ("-DI18N_PHONENUMBERS_USE_RE2")
3041767c5feSopenharmony_ci  list (APPEND SOURCES "src/phonenumbers/regexp_adapter_re2.cc")
3051767c5feSopenharmony_ciendif ()
3061767c5feSopenharmony_ci
3071767c5feSopenharmony_ciif (USE_ICU_REGEXP)
3081767c5feSopenharmony_ci  add_definitions ("-DI18N_PHONENUMBERS_USE_ICU_REGEXP")
3091767c5feSopenharmony_ci  list (APPEND SOURCES "src/phonenumbers/regexp_adapter_icu.cc")
3101767c5feSopenharmony_ci  # The phone number matcher needs ICU.
3111767c5feSopenharmony_ci  list (APPEND SOURCES "src/phonenumbers/phonenumbermatch.cc")
3121767c5feSopenharmony_ci  list (APPEND SOURCES "src/phonenumbers/phonenumbermatcher.cc")
3131767c5feSopenharmony_ci  if (USE_ALTERNATE_FORMATS)
3141767c5feSopenharmony_ci    list (APPEND SOURCES "src/phonenumbers/alternate_format.cc")
3151767c5feSopenharmony_ci  endif ()
3161767c5feSopenharmony_ciendif ()
3171767c5feSopenharmony_ci
3181767c5feSopenharmony_ci# Library sources excluding the metadata files, since special metadata is used
3191767c5feSopenharmony_ci# for unit-testing. Note that a single testing library is built for both
3201767c5feSopenharmony_ci# libphonenumber and geocoding.
3211767c5feSopenharmony_ciset (TESTING_LIBRARY_SOURCES ${SOURCES})
3221767c5feSopenharmony_ciif (BUILD_GEOCODER)
3231767c5feSopenharmony_ci  list (APPEND TESTING_LIBRARY_SOURCES ${GEOCODING_SOURCES})
3241767c5feSopenharmony_ciendif ()
3251767c5feSopenharmony_ci
3261767c5feSopenharmony_ci# Add metadata code generation targets.
3271767c5feSopenharmony_ci
3281767c5feSopenharmony_ci# This function is invoked to create metadata, test metadata and lite metadata
3291767c5feSopenharmony_ci# code generation targets.
3301767c5feSopenharmony_cifunction (add_metadata_gen_target TARGET_NAME XML_FILE METADATA_TYPE METADATA_HEADER)
3311767c5feSopenharmony_ci  set (METADATA_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/phonenumbers")
3321767c5feSopenharmony_ci  set (GEN_OUTPUT "${METADATA_SOURCE_DIR}/${METADATA_TYPE}.cc" "${METADATA_SOURCE_DIR}/${METADATA_HEADER}.h")
3331767c5feSopenharmony_ci  set (JAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../tools/java/cpp-build/target")
3341767c5feSopenharmony_ci  set (JAR_PATH "${JAR_PATH}/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar")
3351767c5feSopenharmony_ci
3361767c5feSopenharmony_ci  if (REGENERATE_METADATA)
3371767c5feSopenharmony_ci    add_custom_command (
3381767c5feSopenharmony_ci      COMMAND ${JAVA_BIN} -jar
3391767c5feSopenharmony_ci        ${JAR_PATH} BuildMetadataCppFromXml ${XML_FILE}
3401767c5feSopenharmony_ci        ${CMAKE_CURRENT_SOURCE_DIR}/src/phonenumbers ${METADATA_TYPE}
3411767c5feSopenharmony_ci
3421767c5feSopenharmony_ci      OUTPUT ${GEN_OUTPUT}
3431767c5feSopenharmony_ci      DEPENDS ${XML_FILE}
3441767c5feSopenharmony_ci    )
3451767c5feSopenharmony_ci  else ()
3461767c5feSopenharmony_ci    add_custom_command (
3471767c5feSopenharmony_ci      COMMAND echo "skip metadata generation from"
3481767c5feSopenharmony_ci        ${XML_FILE} "to"
3491767c5feSopenharmony_ci        ${CMAKE_CURRENT_SOURCE_DIR}/src/phonenumbers ${METADATA_TYPE}
3501767c5feSopenharmony_ci
3511767c5feSopenharmony_ci      OUTPUT ${GEN_OUTPUT}
3521767c5feSopenharmony_ci      DEPENDS ${XML_FILE}
3531767c5feSopenharmony_ci    )
3541767c5feSopenharmony_ci  endif ()
3551767c5feSopenharmony_ci
3561767c5feSopenharmony_ci  add_custom_target (
3571767c5feSopenharmony_ci    ${TARGET_NAME}
3581767c5feSopenharmony_ci    DEPENDS ${GEN_OUTPUT}
3591767c5feSopenharmony_ci    COMMENT "Generating Metadata code"
3601767c5feSopenharmony_ci  )
3611767c5feSopenharmony_ciendfunction (add_metadata_gen_target)
3621767c5feSopenharmony_ci
3631767c5feSopenharmony_ciif (USE_LITE_METADATA)
3641767c5feSopenharmony_ci  # Add the lite metadata generation target.
3651767c5feSopenharmony_ci  set (METADATA_TARGET "generate-lite-metadata")
3661767c5feSopenharmony_ci  add_metadata_gen_target (
3671767c5feSopenharmony_ci    ${METADATA_TARGET}
3681767c5feSopenharmony_ci    "${RESOURCES_DIR}/PhoneNumberMetadata.xml"
3691767c5feSopenharmony_ci    "lite_metadata"
3701767c5feSopenharmony_ci    "metadata"
3711767c5feSopenharmony_ci  )
3721767c5feSopenharmony_ci  list (APPEND SOURCES "src/phonenumbers/lite_metadata.cc")
3731767c5feSopenharmony_cielse ()
3741767c5feSopenharmony_ci  # Add the metadata generation target.
3751767c5feSopenharmony_ci  set (METADATA_TARGET "generate-metadata")
3761767c5feSopenharmony_ci  add_metadata_gen_target (
3771767c5feSopenharmony_ci    ${METADATA_TARGET}
3781767c5feSopenharmony_ci    "${RESOURCES_DIR}/PhoneNumberMetadata.xml"
3791767c5feSopenharmony_ci    "metadata"
3801767c5feSopenharmony_ci    "metadata"
3811767c5feSopenharmony_ci  )
3821767c5feSopenharmony_ci  list (APPEND SOURCES "src/phonenumbers/metadata.cc")
3831767c5feSopenharmony_ciendif ()
3841767c5feSopenharmony_ci
3851767c5feSopenharmony_ci# Add the test metadata generation target.
3861767c5feSopenharmony_ciset (TEST_METADATA_TARGET "generate-test-metadata")
3871767c5feSopenharmony_ciadd_metadata_gen_target (
3881767c5feSopenharmony_ci  ${TEST_METADATA_TARGET}
3891767c5feSopenharmony_ci  "${RESOURCES_DIR}/PhoneNumberMetadataForTesting.xml"
3901767c5feSopenharmony_ci  "test_metadata"
3911767c5feSopenharmony_ci  "test_metadata"
3921767c5feSopenharmony_ci)
3931767c5feSopenharmony_cilist (APPEND TESTING_LIBRARY_SOURCES "src/phonenumbers/test_metadata.cc")
3941767c5feSopenharmony_ci
3951767c5feSopenharmony_ci# Add the short metadata generation target.
3961767c5feSopenharmony_ciset (SHORT_METADATA_TARGET "generate-short-number-metadata")
3971767c5feSopenharmony_ciadd_metadata_gen_target (
3981767c5feSopenharmony_ci  ${SHORT_METADATA_TARGET}
3991767c5feSopenharmony_ci  "${RESOURCES_DIR}/ShortNumberMetadata.xml"
4001767c5feSopenharmony_ci  "short_metadata"
4011767c5feSopenharmony_ci  "short_metadata"
4021767c5feSopenharmony_ci)
4031767c5feSopenharmony_ci# This is used both for the real library and for testing.
4041767c5feSopenharmony_cilist (APPEND SOURCES "src/phonenumbers/short_metadata.cc")
4051767c5feSopenharmony_cilist (APPEND TESTING_LIBRARY_SOURCES "src/phonenumbers/short_metadata.cc")
4061767c5feSopenharmony_ci
4071767c5feSopenharmony_ciif (USE_ICU_REGEXP)
4081767c5feSopenharmony_ci  if (USE_ALTERNATE_FORMATS)
4091767c5feSopenharmony_ci    # Add alternate format metadata generation for the phone number matcher.
4101767c5feSopenharmony_ci    set (ALT_FORMAT_METADATA_TARGET "generate-alt-format-metadata")
4111767c5feSopenharmony_ci    add_metadata_gen_target (
4121767c5feSopenharmony_ci      ${ALT_FORMAT_METADATA_TARGET}
4131767c5feSopenharmony_ci      "${RESOURCES_DIR}/PhoneNumberAlternateFormats.xml"
4141767c5feSopenharmony_ci      "alternate_format"
4151767c5feSopenharmony_ci      "alternate_format"
4161767c5feSopenharmony_ci    )
4171767c5feSopenharmony_ci  endif ()
4181767c5feSopenharmony_ciendif ()
4191767c5feSopenharmony_ci
4201767c5feSopenharmony_ciif (NOT WIN32)
4211767c5feSopenharmony_ci  add_definitions ("-Wall -Werror")
4221767c5feSopenharmony_ciendif ()
4231767c5feSopenharmony_ci
4241767c5feSopenharmony_ciinclude_directories ("src")
4251767c5feSopenharmony_ci
4261767c5feSopenharmony_ci#----------------------------------------------------------------
4271767c5feSopenharmony_ci# Collate dependencies
4281767c5feSopenharmony_ci#----------------------------------------------------------------
4291767c5feSopenharmony_ci
4301767c5feSopenharmony_ciset (LIBRARY_DEPS ${ICU_LIB} ${PROTOBUF_LIB} absl::node_hash_set absl::strings absl::synchronization)
4311767c5feSopenharmony_ci
4321767c5feSopenharmony_ciif (USE_BOOST)
4331767c5feSopenharmony_ci  list (APPEND LIBRARY_DEPS ${Boost_LIBRARIES})
4341767c5feSopenharmony_ciendif ()
4351767c5feSopenharmony_ci
4361767c5feSopenharmony_ciif (USE_RE2)
4371767c5feSopenharmony_ci  list (APPEND LIBRARY_DEPS ${RE2_LIB})
4381767c5feSopenharmony_ciendif ()
4391767c5feSopenharmony_ci
4401767c5feSopenharmony_ciif (USE_POSIX_THREAD OR ((APPLE OR UNIX) AND (NOT (USE_BOOST OR USE_STDMUTEX))))
4411767c5feSopenharmony_ci  if(CMAKE_USE_PTHREADS_INIT)
4421767c5feSopenharmony_ci    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
4431767c5feSopenharmony_ci  endif()
4441767c5feSopenharmony_ci  if(CMAKE_THREAD_LIBS_INIT)
4451767c5feSopenharmony_ci    list (APPEND LIBRARY_DEPS ${CMAKE_THREAD_LIBS_INIT})
4461767c5feSopenharmony_ci  endif()
4471767c5feSopenharmony_ciendif ()
4481767c5feSopenharmony_ci
4491767c5feSopenharmony_ciif (APPLE)
4501767c5feSopenharmony_ci  list (APPEND LIBRARY_DEPS ${COREFOUNDATION_LIB} ${FOUNDATION_LIB})
4511767c5feSopenharmony_ciendif ()
4521767c5feSopenharmony_ci
4531767c5feSopenharmony_ci#----------------------------------------------------------------
4541767c5feSopenharmony_ci# Build libraries
4551767c5feSopenharmony_ci#----------------------------------------------------------------
4561767c5feSopenharmony_ci
4571767c5feSopenharmony_ciif (BUILD_STATIC_LIB)
4581767c5feSopenharmony_ci  # Build a static library (without -fPIC).
4591767c5feSopenharmony_ci  add_library (phonenumber STATIC ${SOURCES})
4601767c5feSopenharmony_ci  target_link_libraries (phonenumber ${LIBRARY_DEPS})
4611767c5feSopenharmony_ci  target_include_directories(phonenumber PUBLIC $<INSTALL_INTERFACE:include>)
4621767c5feSopenharmony_ci
4631767c5feSopenharmony_ci  if (BUILD_GEOCODER)
4641767c5feSopenharmony_ci    add_library (geocoding STATIC ${GEOCODING_SOURCES})
4651767c5feSopenharmony_ci    target_link_libraries (geocoding ${LIBRARY_DEPS})
4661767c5feSopenharmony_ci    target_include_directories(geocoding PUBLIC $<INSTALL_INTERFACE:include>)
4671767c5feSopenharmony_ci    add_dependencies (geocoding generate_geocoding_data)
4681767c5feSopenharmony_ci    add_dependencies (phonenumber generate_geocoding_data)
4691767c5feSopenharmony_ci  endif ()
4701767c5feSopenharmony_ci
4711767c5feSopenharmony_ci  if (USE_ICU_REGEXP AND USE_ALTERNATE_FORMATS)
4721767c5feSopenharmony_ci    add_dependencies (phonenumber ${ALT_FORMAT_METADATA_TARGET})
4731767c5feSopenharmony_ci  endif ()
4741767c5feSopenharmony_ciendif ()
4751767c5feSopenharmony_ci
4761767c5feSopenharmony_ci
4771767c5feSopenharmony_ciif (BUILD_SHARED_LIBS)
4781767c5feSopenharmony_ci  # Build a shared library (with -fPIC).
4791767c5feSopenharmony_ci  add_library (phonenumber-shared SHARED ${SOURCES})
4801767c5feSopenharmony_ci  target_link_libraries (phonenumber-shared ${LIBRARY_DEPS})
4811767c5feSopenharmony_ci  target_include_directories(phonenumber-shared PUBLIC $<INSTALL_INTERFACE:include>)
4821767c5feSopenharmony_ci
4831767c5feSopenharmony_ci  set_target_properties (phonenumber-shared
4841767c5feSopenharmony_ci    PROPERTIES
4851767c5feSopenharmony_ci      OUTPUT_NAME "phonenumber"
4861767c5feSopenharmony_ci      PREFIX "lib"
4871767c5feSopenharmony_ci      SOVERSION ${libphonenumber_VERSION_MAJOR}
4881767c5feSopenharmony_ci      VERSION ${libphonenumber_VERSION_MAJOR}.${libphonenumber_VERSION_MINOR})
4891767c5feSopenharmony_ci
4901767c5feSopenharmony_ci  if (USE_ICU_REGEXP AND USE_ALTERNATE_FORMATS)
4911767c5feSopenharmony_ci   add_dependencies (phonenumber-shared ${ALT_FORMAT_METADATA_TARGET})
4921767c5feSopenharmony_ci  endif ()
4931767c5feSopenharmony_ci
4941767c5feSopenharmony_ci  if (BUILD_GEOCODER)
4951767c5feSopenharmony_ci    add_library (geocoding-shared SHARED ${GEOCODING_SOURCES})
4961767c5feSopenharmony_ci    target_link_libraries (geocoding-shared ${LIBRARY_DEPS})
4971767c5feSopenharmony_ci    target_include_directories(geocoding-shared PUBLIC $<INSTALL_INTERFACE:include>)
4981767c5feSopenharmony_ci    add_dependencies (geocoding-shared generate_geocoding_data)
4991767c5feSopenharmony_ci    add_dependencies (phonenumber-shared generate_geocoding_data)
5001767c5feSopenharmony_ci
5011767c5feSopenharmony_ci    set_target_properties (geocoding-shared
5021767c5feSopenharmony_ci      PROPERTIES
5031767c5feSopenharmony_ci        OUTPUT_NAME "geocoding"
5041767c5feSopenharmony_ci        PREFIX "lib"
5051767c5feSopenharmony_ci        SOVERSION ${libphonenumber_VERSION_MAJOR}
5061767c5feSopenharmony_ci        VERSION ${libphonenumber_VERSION_MAJOR}.${libphonenumber_VERSION_MINOR})
5071767c5feSopenharmony_ci  endif ()
5081767c5feSopenharmony_ciendif ()
5091767c5feSopenharmony_ci
5101767c5feSopenharmony_ci#----------------------------------------------------------------
5111767c5feSopenharmony_ci# Build testing library
5121767c5feSopenharmony_ci#----------------------------------------------------------------
5131767c5feSopenharmony_ci
5141767c5feSopenharmony_ciif(BUILD_TESTING)
5151767c5feSopenharmony_ci  add_library (phonenumber_testing STATIC ${TESTING_LIBRARY_SOURCES})
5161767c5feSopenharmony_ci  if (BUILD_GEOCODER)
5171767c5feSopenharmony_ci    add_dependencies (phonenumber_testing generate_geocoding_data)
5181767c5feSopenharmony_ci  endif ()
5191767c5feSopenharmony_ci  target_link_libraries (phonenumber_testing ${LIBRARY_DEPS})
5201767c5feSopenharmony_ci
5211767c5feSopenharmony_ci  if (BUILD_GEOCODER)
5221767c5feSopenharmony_ci    # Test geocoding data cpp files generation.
5231767c5feSopenharmony_ci    set (GEOCODING_TEST_DIR "${RESOURCES_DIR}/test/geocoding")
5241767c5feSopenharmony_ci    file (GLOB_RECURSE GEOCODING_TEST_SOURCES "${GEOCODING_TEST_DIR}/*.txt")
5251767c5feSopenharmony_ci
5261767c5feSopenharmony_ci    set (GEOCODING_TEST_DATA_OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/test/phonenumbers/geocoding/geocoding_test_data.cc")
5271767c5feSopenharmony_ci
5281767c5feSopenharmony_ci    add_custom_command (
5291767c5feSopenharmony_ci      COMMAND generate_geocoding_data "${GEOCODING_TEST_DIR}" "${GEOCODING_TEST_DATA_OUTPUT}" "_test"
5301767c5feSopenharmony_ci      OUTPUT ${GEOCODING_TEST_DATA_OUTPUT}
5311767c5feSopenharmony_ci      DEPENDS ${GEOCODING_TEST_SOURCES} generate_geocoding_data
5321767c5feSopenharmony_ci      COMMENT "Generating geocoding test data code"
5331767c5feSopenharmony_ci    )
5341767c5feSopenharmony_ci  endif ()
5351767c5feSopenharmony_ci
5361767c5feSopenharmony_ci  set (TEST_SOURCES
5371767c5feSopenharmony_ci      "test/phonenumbers/asyoutypeformatter_test.cc"
5381767c5feSopenharmony_ci      "test/phonenumbers/logger_test.cc"
5391767c5feSopenharmony_ci      "test/phonenumbers/matcher_test.cc"
5401767c5feSopenharmony_ci      "test/phonenumbers/phonenumberutil_test.cc"
5411767c5feSopenharmony_ci      "test/phonenumbers/regexp_adapter_test.cc"
5421767c5feSopenharmony_ci      "test/phonenumbers/regexp_cache_test.cc"
5431767c5feSopenharmony_ci      "test/phonenumbers/run_tests.cc"
5441767c5feSopenharmony_ci      "test/phonenumbers/shortnumberinfo_test.cc"
5451767c5feSopenharmony_ci      "test/phonenumbers/stringutil_test.cc"
5461767c5feSopenharmony_ci      "test/phonenumbers/test_util.cc"
5471767c5feSopenharmony_ci      "test/phonenumbers/unicodestring_test.cc"
5481767c5feSopenharmony_ci      "test/phonenumbers/utf/unicodetext_test.cc")
5491767c5feSopenharmony_ci
5501767c5feSopenharmony_ci  if (BUILD_GEOCODER)
5511767c5feSopenharmony_ci    set (GEOCODING_TEST_SOURCES
5521767c5feSopenharmony_ci        "test/phonenumbers/geocoding/area_code_map_test.cc"
5531767c5feSopenharmony_ci        "test/phonenumbers/geocoding/geocoding_data_test.cc"
5541767c5feSopenharmony_ci        "test/phonenumbers/geocoding/geocoding_test_data.cc"
5551767c5feSopenharmony_ci        "test/phonenumbers/geocoding/mapping_file_provider_test.cc"
5561767c5feSopenharmony_ci        "test/phonenumbers/geocoding/phonenumber_offline_geocoder_test.cc")
5571767c5feSopenharmony_ci    list (APPEND TEST_SOURCES ${GEOCODING_TEST_SOURCES})
5581767c5feSopenharmony_ci  endif ()
5591767c5feSopenharmony_ci
5601767c5feSopenharmony_ci  if (USE_ICU_REGEXP)
5611767c5feSopenharmony_ci    # Add the phone number matcher tests.
5621767c5feSopenharmony_ci    list (APPEND TEST_SOURCES "test/phonenumbers/phonenumbermatch_test.cc")
5631767c5feSopenharmony_ci    list (APPEND TEST_SOURCES "test/phonenumbers/phonenumbermatcher_test.cc")
5641767c5feSopenharmony_ci  endif ()
5651767c5feSopenharmony_ci
5661767c5feSopenharmony_ci  # Build the testing binary.
5671767c5feSopenharmony_ci  include_directories ("test")
5681767c5feSopenharmony_ci  add_executable (libphonenumber_test ${TEST_SOURCES})
5691767c5feSopenharmony_ci  set (TEST_LIBS phonenumber_testing ${GTEST_LIB})
5701767c5feSopenharmony_ci
5711767c5feSopenharmony_ci  if (NOT WIN32)
5721767c5feSopenharmony_ci    list (APPEND TEST_LIBS pthread)
5731767c5feSopenharmony_ci  endif ()
5741767c5feSopenharmony_ci
5751767c5feSopenharmony_ci  target_link_libraries (libphonenumber_test ${TEST_LIBS})
5761767c5feSopenharmony_ci
5771767c5feSopenharmony_ci  # Unfortunately add_custom_target() can't accept a single command provided as a
5781767c5feSopenharmony_ci  # list of commands.
5791767c5feSopenharmony_ci  if (BUILD_GEOCODER)
5801767c5feSopenharmony_ci    add_custom_target (tests
5811767c5feSopenharmony_ci      COMMAND generate_geocoding_data_test
5821767c5feSopenharmony_ci      COMMAND libphonenumber_test
5831767c5feSopenharmony_ci      DEPENDS generate_geocoding_data_test libphonenumber_test
5841767c5feSopenharmony_ci    )
5851767c5feSopenharmony_ci  else ()
5861767c5feSopenharmony_ci    add_custom_target (tests
5871767c5feSopenharmony_ci      COMMAND libphonenumber_test
5881767c5feSopenharmony_ci      DEPENDS libphonenumber_test
5891767c5feSopenharmony_ci    )
5901767c5feSopenharmony_ci  endif ()
5911767c5feSopenharmony_ci
5921767c5feSopenharmony_ci  # Build an example program using geocoding, mainly to make sure that both
5931767c5feSopenharmony_ci  # libraries are built properly.
5941767c5feSopenharmony_ci  if (BUILD_GEOCODER)
5951767c5feSopenharmony_ci    add_executable (geocoding_test_program "test/phonenumbers/geocoding/geocoding_test_program.cc")
5961767c5feSopenharmony_ci    target_link_libraries (geocoding_test_program geocoding phonenumber)
5971767c5feSopenharmony_ci  endif ()
5981767c5feSopenharmony_ciendif()
5991767c5feSopenharmony_ci
6001767c5feSopenharmony_ci#----------------------------------------------------------------
6011767c5feSopenharmony_ci# Install built libraries
6021767c5feSopenharmony_ci#----------------------------------------------------------------
6031767c5feSopenharmony_ci
6041767c5feSopenharmony_ciset (BUILT_LIBS)
6051767c5feSopenharmony_ciset(targets_export_name "${PROJECT_NAME}-targets")
6061767c5feSopenharmony_ci
6071767c5feSopenharmony_ciif (BUILD_STATIC_LIB)
6081767c5feSopenharmony_ci  list (APPEND BUILT_LIBS phonenumber)
6091767c5feSopenharmony_ci  if (BUILD_GEOCODER)
6101767c5feSopenharmony_ci    list (APPEND BUILT_LIBS geocoding)
6111767c5feSopenharmony_ci  endif()
6121767c5feSopenharmony_ciendif()
6131767c5feSopenharmony_ci
6141767c5feSopenharmony_ciif (BUILD_SHARED_LIBS)
6151767c5feSopenharmony_ci  list (APPEND BUILT_LIBS phonenumber-shared)
6161767c5feSopenharmony_ci  if (BUILD_GEOCODER)
6171767c5feSopenharmony_ci    list (APPEND BUILT_LIBS geocoding-shared)
6181767c5feSopenharmony_ci  endif()
6191767c5feSopenharmony_ciendif()
6201767c5feSopenharmony_ci
6211767c5feSopenharmony_ciinstall (
6221767c5feSopenharmony_ci  TARGETS ${BUILT_LIBS}
6231767c5feSopenharmony_ci  EXPORT "${targets_export_name}"
6241767c5feSopenharmony_ci  LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
6251767c5feSopenharmony_ci  ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
6261767c5feSopenharmony_ci
6271767c5feSopenharmony_ci#----------------------------------------------------------------
6281767c5feSopenharmony_ci# Install headers
6291767c5feSopenharmony_ci#----------------------------------------------------------------
6301767c5feSopenharmony_ci
6311767c5feSopenharmony_ciinstall (FILES
6321767c5feSopenharmony_ci  "src/phonenumbers/asyoutypeformatter.h"
6331767c5feSopenharmony_ci  "src/phonenumbers/callback.h"
6341767c5feSopenharmony_ci  "src/phonenumbers/logger.h"
6351767c5feSopenharmony_ci  "src/phonenumbers/matcher_api.h"
6361767c5feSopenharmony_ci  "src/phonenumbers/phonenumber.pb.h"
6371767c5feSopenharmony_ci  "src/phonenumbers/phonemetadata.pb.h"
6381767c5feSopenharmony_ci  "src/phonenumbers/phonenumberutil.h"
6391767c5feSopenharmony_ci  "src/phonenumbers/regexp_adapter.h"
6401767c5feSopenharmony_ci  "src/phonenumbers/regexp_cache.h"
6411767c5feSopenharmony_ci  "src/phonenumbers/region_code.h"
6421767c5feSopenharmony_ci  "src/phonenumbers/shortnumberinfo.h"
6431767c5feSopenharmony_ci  "src/phonenumbers/unicodestring.h"
6441767c5feSopenharmony_ci  DESTINATION include/phonenumbers/
6451767c5feSopenharmony_ci)
6461767c5feSopenharmony_ci
6471767c5feSopenharmony_ciinstall (FILES "src/phonenumbers/utf/unicodetext.h"
6481767c5feSopenharmony_ci         DESTINATION include/phonenumbers/utf/)
6491767c5feSopenharmony_ci
6501767c5feSopenharmony_ciif (USE_ICU_REGEXP)
6511767c5feSopenharmony_ci  # Install the phone number matcher headers.
6521767c5feSopenharmony_ci  install (FILES
6531767c5feSopenharmony_ci    "src/phonenumbers/phonenumbermatch.h"
6541767c5feSopenharmony_ci    "src/phonenumbers/phonenumbermatcher.h"
6551767c5feSopenharmony_ci    "src/phonenumbers/regexp_adapter.h"
6561767c5feSopenharmony_ci    DESTINATION include/phonenumbers/
6571767c5feSopenharmony_ci  )
6581767c5feSopenharmony_ciendif ()
6591767c5feSopenharmony_ci
6601767c5feSopenharmony_ciif (BUILD_GEOCODER)
6611767c5feSopenharmony_ci  install (FILES
6621767c5feSopenharmony_ci    "src/phonenumbers/geocoding/phonenumber_offline_geocoder.h"
6631767c5feSopenharmony_ci    DESTINATION include/phonenumbers/geocoding
6641767c5feSopenharmony_ci  )
6651767c5feSopenharmony_ciendif ()
6661767c5feSopenharmony_ci
6671767c5feSopenharmony_ciinstall (
6681767c5feSopenharmony_ci  FILES
6691767c5feSopenharmony_ci  "src/phonenumbers/base/basictypes.h"
6701767c5feSopenharmony_ci  "src/phonenumbers/base/template_util.h"
6711767c5feSopenharmony_ci  "src/phonenumbers/base/logging.h"
6721767c5feSopenharmony_ci  "src/phonenumbers/base/thread_checker.h"
6731767c5feSopenharmony_ci  DESTINATION include/phonenumbers/base/
6741767c5feSopenharmony_ci)
6751767c5feSopenharmony_ci
6761767c5feSopenharmony_ciinstall (FILES
6771767c5feSopenharmony_ci  "src/phonenumbers/base/memory/scoped_ptr.h"
6781767c5feSopenharmony_ci  "src/phonenumbers/base/memory/singleton.h"
6791767c5feSopenharmony_ci  "src/phonenumbers/base/memory/singleton_boost.h"
6801767c5feSopenharmony_ci  "src/phonenumbers/base/memory/singleton_posix.h"
6811767c5feSopenharmony_ci  "src/phonenumbers/base/memory/singleton_stdmutex.h"
6821767c5feSopenharmony_ci  "src/phonenumbers/base/memory/singleton_unsafe.h"
6831767c5feSopenharmony_ci  "src/phonenumbers/base/memory/singleton_win32.h"
6841767c5feSopenharmony_ci  DESTINATION include/phonenumbers/base/memory/
6851767c5feSopenharmony_ci)
6861767c5feSopenharmony_ci
6871767c5feSopenharmony_ciinstall (FILES
6881767c5feSopenharmony_ci  "src/phonenumbers/base/synchronization/lock.h"
6891767c5feSopenharmony_ci  "src/phonenumbers/base/synchronization/lock_boost.h"
6901767c5feSopenharmony_ci  "src/phonenumbers/base/synchronization/lock_posix.h"
6911767c5feSopenharmony_ci  "src/phonenumbers/base/synchronization/lock_stdmutex.h"
6921767c5feSopenharmony_ci  "src/phonenumbers/base/synchronization/lock_unsafe.h"
6931767c5feSopenharmony_ci  "src/phonenumbers/base/synchronization/lock_win32.h"
6941767c5feSopenharmony_ci  DESTINATION include/phonenumbers/base/synchronization/)
6951767c5feSopenharmony_ci
6961767c5feSopenharmony_ci#----------------------------------------------------------------
6971767c5feSopenharmony_ci# Build and install cmake config files
6981767c5feSopenharmony_ci#----------------------------------------------------------------
6991767c5feSopenharmony_ci
7001767c5feSopenharmony_ciinclude(CMakePackageConfigHelpers)
7011767c5feSopenharmony_ci
7021767c5feSopenharmony_ciset(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
7031767c5feSopenharmony_ciset(version_config "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake")
7041767c5feSopenharmony_ciset(project_config "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake")
7051767c5feSopenharmony_ci
7061767c5feSopenharmony_ci# libphonenumber-config-version.cmake
7071767c5feSopenharmony_ciwrite_basic_package_version_file("${version_config}" COMPATIBILITY SameMajorVersion)
7081767c5feSopenharmony_ci
7091767c5feSopenharmony_ci# libphonenumber-config.cmake
7101767c5feSopenharmony_ciconfigure_package_config_file("cmake/config.cmake.in" "${project_config}" INSTALL_DESTINATION "${config_install_dir}")
7111767c5feSopenharmony_ci
7121767c5feSopenharmony_ciinstall(FILES "${project_config}" "${version_config}" DESTINATION "${config_install_dir}")
7131767c5feSopenharmony_ciinstall(EXPORT "${targets_export_name}" NAMESPACE ${PROJECT_NAME}:: DESTINATION "${config_install_dir}")
7141767c5feSopenharmony_ci
7151767c5feSopenharmony_ci#----------------------------------------------------------------
7161767c5feSopenharmony_ci# Build an RPM
7171767c5feSopenharmony_ci#----------------------------------------------------------------
7181767c5feSopenharmony_ci
7191767c5feSopenharmony_ciset (CPACK_PACKAGE_VERSION ${libphonenumber_VERSION_MAJOR}.${libphonenumber_VERSION_MINOR}.${libphonenumber_VERSION_PATCH})
7201767c5feSopenharmony_ciset (CPACK_GENERATOR "RPM")
7211767c5feSopenharmony_ciset (CPACK_PACKAGE_NAME "libphonenumber")
7221767c5feSopenharmony_ciset (CPACK_RPM_PACKAGE_RELEASE 1)
7231767c5feSopenharmony_ciset (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Google's phone number handling library")
7241767c5feSopenharmony_ciif (32BIT)
7251767c5feSopenharmony_ci  set (CPACK_RPM_PACKAGE_ARCHITECTURE i686)
7261767c5feSopenharmony_cielse ()
7271767c5feSopenharmony_ci  set (CPACK_RPM_PACKAGE_ARCHITECTURE x86_64)
7281767c5feSopenharmony_ciendif ()
7291767c5feSopenharmony_ciset (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}.${CPACK_RPM_PACKAGE_ARCHITECTURE}")
7301767c5feSopenharmony_ciinclude (CPack)
731