RPM packaging
[platform/upstream/libphonenumber.git] / cpp / CMakeLists.txt
index 9bf41d9..c705f79 100644 (file)
 cmake_minimum_required (VERSION 2.8)
 
 project (libphonenumber)
-set (libphonenumber_VERSION_MAJOR 5)
-set (libphonenumber_VERSION_MINOR 6)
+set (libphonenumber_VERSION_MAJOR 7)
+set (libphonenumber_VERSION_MINOR 0)
+set (libphonenumber_VERSION_PATCH 2)
+
+if (32BIT)
+  set_property (GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS FALSE)
+  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
+  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
+  set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m32")
+  set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")
+endif ()
 
 # Helper functions dealing with finding libraries and programs this library
 # depends on.
@@ -76,6 +85,7 @@ option ("USE_ICU_REGEXP" "Use ICU regexp engine" "ON")
 option ("USE_LITE_METADATA" "Use lite metadata" "OFF")
 option ("USE_RE2" "Use RE2" "OFF")
 option ("USE_STD_MAP" "Force the use of std::map" "OFF")
+option ("BUILD_STATIC_LIB" "Build static libraries" "ON")
 
 if (${USE_ALTERNATE_FORMATS} STREQUAL "ON")
   add_definitions ("-DI18N_PHONENUMBERS_USE_ALTERNATE_FORMATS")
@@ -87,9 +97,9 @@ if (${USE_BOOST} STREQUAL "ON")
   if (WIN32)
     set (Boost_USE_STATIC_LIBS ON)
   endif ()
-  find_package (Boost 1.40.0 COMPONENTS date_time thread)
+  find_package (Boost 1.40.0 COMPONENTS date_time system thread)
   if (NOT Boost_FOUND)
-    print_error ("Boost Datetime/Thread" "Boost")
+    print_error ("Boost Date_Time/System/Thread" "Boost")
   endif ()
   include_directories (${Boost_INCLUDE_DIRS})
 endif ()
@@ -192,8 +202,9 @@ set (
   "src/phonenumbers/phonenumber.cc"
   "src/phonenumbers/phonenumber.pb.cc"   # Generated by Protocol Buffers.
   "src/phonenumbers/phonenumberutil.cc"
+  "src/phonenumbers/regex_based_matcher.cc"
   "src/phonenumbers/regexp_cache.cc"
-  "src/phonenumbers/shortnumberutil.cc"
+  "src/phonenumbers/shortnumberinfo.cc"
   "src/phonenumbers/string_byte_sink.cc"
   "src/phonenumbers/stringutil.cc"
   "src/phonenumbers/unicodestring.cc"
@@ -277,7 +288,7 @@ if (${USE_LITE_METADATA} STREQUAL "ON")
   set (METADATA_TARGET "generate-lite-metadata")
   add_metadata_gen_target (
     ${METADATA_TARGET}
-    "${RESOURCES_DIR}/PhoneNumberMetaData.xml"
+    "${RESOURCES_DIR}/PhoneNumberMetadata.xml"
     "lite_metadata"
     "metadata"
   )
@@ -287,7 +298,7 @@ else ()
   set (METADATA_TARGET "generate-metadata")
   add_metadata_gen_target (
     ${METADATA_TARGET}
-    "${RESOURCES_DIR}/PhoneNumberMetaData.xml"
+    "${RESOURCES_DIR}/PhoneNumberMetadata.xml"
     "metadata"
     "metadata"
   )
@@ -298,12 +309,24 @@ endif ()
 set (TEST_METADATA_TARGET "generate-test-metadata")
 add_metadata_gen_target (
   ${TEST_METADATA_TARGET}
-  "${RESOURCES_DIR}/PhoneNumberMetaDataForTesting.xml"
+  "${RESOURCES_DIR}/PhoneNumberMetadataForTesting.xml"
   "test_metadata"
   "metadata"
 )
 list (APPEND TESTING_LIBRARY_SOURCES "src/phonenumbers/test_metadata.cc")
 
+# Add the short metadata generation target.
+set (SHORT_METADATA_TARGET "generate-short-number-metadata")
+add_metadata_gen_target (
+  ${SHORT_METADATA_TARGET}
+  "${RESOURCES_DIR}/ShortNumberMetadata.xml"
+  "short_metadata"
+  "short_metadata"
+)
+# This is used both for the real library and for testing.
+list (APPEND SOURCES "src/phonenumbers/short_metadata.cc")
+list (APPEND TESTING_LIBRARY_SOURCES "src/phonenumbers/short_metadata.cc")
+
 if (${USE_ICU_REGEXP} STREQUAL "ON")
   if (${USE_ALTERNATE_FORMATS} STREQUAL "ON")
     # Add alternate format metadata generation for the phone number matcher.
@@ -323,16 +346,20 @@ endif ()
 
 include_directories ("src")
 
-# Build a static library (without -fPIC).
-add_library (phonenumber STATIC ${SOURCES})
-if (${USE_ICU_REGEXP} STREQUAL "ON")
-  if (${USE_ALTERNATE_FORMATS} STREQUAL "ON")
-    add_dependencies (phonenumber ${ALT_FORMAT_METADATA_TARGET})
+if ($BUILD_STATIC_LIB STREQUAL "ON")
+  # Build a static library (without -fPIC).
+  add_library (phonenumber STATIC ${SOURCES})
+  if (${USE_ICU_REGEXP} STREQUAL "ON")
+    if (${USE_ALTERNATE_FORMATS} STREQUAL "ON")
+      add_dependencies (phonenumber ${ALT_FORMAT_METADATA_TARGET})
+    endif ()
   endif ()
 endif ()
 
 if (${BUILD_GEOCODER} STREQUAL "ON")
-  add_library (geocoding STATIC ${GEOCODING_SOURCES})
+  if ($BUILD_STATIC_LIB STREQUAL "ON")
+    add_library (geocoding STATIC ${GEOCODING_SOURCES})
+  endif ()
   # The geocoder doesn't use RE2 so there is no reason not to build a shared
   # library for it.
   add_library (geocoding-shared SHARED ${GEOCODING_SOURCES})
@@ -361,7 +388,7 @@ if (BUILD_SHARED_LIB)
   add_library (phonenumber-shared SHARED ${SOURCES})
   if (${USE_ICU_REGEXP} STREQUAL "ON")
     if (${USE_ALTERNATE_FORMATS} STREQUAL "ON")
-      add_dependencies (phonenumber ${ALT_FORMAT_METADATA_TARGET})
+      add_dependencies (phonenumber-shared ${ALT_FORMAT_METADATA_TARGET})
     endif ()
   endif ()
   set_target_properties (phonenumber-shared
@@ -391,7 +418,9 @@ endif ()
 
 list (APPEND LIBRARY_DEPS ${COMMON_DEPS})
 
-target_link_libraries (phonenumber ${LIBRARY_DEPS})
+if (${BUILD_STATIC_LIB} STREQUAL "ON")
+  target_link_libraries (phonenumber ${LIBRARY_DEPS})
+endif ()
 
 if (BUILD_SHARED_LIB)
   target_link_libraries (phonenumber-shared ${LIBRARY_DEPS})
@@ -436,7 +465,7 @@ set (TEST_SOURCES
   "test/phonenumbers/regexp_adapter_test.cc"
   "test/phonenumbers/regexp_cache_test.cc"
   "test/phonenumbers/run_tests.cc"
-  "test/phonenumbers/shortnumberutil_test.cc"
+  "test/phonenumbers/shortnumberinfo_test.cc"
   "test/phonenumbers/stringutil_test.cc"
   "test/phonenumbers/test_util.cc"
   "test/phonenumbers/unicodestring_test.cc"
@@ -491,12 +520,13 @@ install (FILES
   "src/phonenumbers/asyoutypeformatter.h"
   "src/phonenumbers/callback.h"
   "src/phonenumbers/logger.h"
+  "src/phonenumbers/matcher_api.h"
   "src/phonenumbers/phonenumber.pb.h"
   "src/phonenumbers/phonemetadata.pb.h"
   "src/phonenumbers/phonenumberutil.h"
   "src/phonenumbers/regexp_adapter.h"
   "src/phonenumbers/regexp_cache.h"
-  "src/phonenumbers/shortnumberutil.h"
+  "src/phonenumbers/shortnumberinfo.h"
   "src/phonenumbers/unicodestring.h"
   DESTINATION include/phonenumbers/
 )
@@ -522,30 +552,45 @@ if (${BUILD_GEOCODER} STREQUAL "ON")
 endif ()
 
 install (
-  FILES "src/phonenumbers/base/basictypes.h"
+  FILES
+  "src/phonenumbers/base/basictypes.h"
+  "src/phonenumbers/base/template_util.h"
+  "src/phonenumbers/base/logging.h"
+  "src/phonenumbers/base/thread_checker.h"
   DESTINATION include/phonenumbers/base/
 )
 
 install (FILES
   "src/phonenumbers/base/memory/scoped_ptr.h"
   "src/phonenumbers/base/memory/singleton.h"
+  "src/phonenumbers/base/memory/singleton_posix.h"
   DESTINATION include/phonenumbers/base/memory/
 )
 
 install (FILES "src/phonenumbers/base/synchronization/lock.h"
          DESTINATION include/phonenumbers/base/synchronization/)
 
-install (TARGETS phonenumber LIBRARY DESTINATION lib/ ARCHIVE DESTINATION lib/)
+get_property (LIB64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
+
+if ("${LIB64}" STREQUAL "TRUE")
+    set (LIBDIR lib64)
+else ()
+    set (LIBDIR lib)
+endif ()
+
+if (${BUILD_STATIC_LIB} STREQUAL "ON")
+  install (TARGETS phonenumber LIBRARY DESTINATION ${LIBDIR} ARCHIVE DESTINATION ${LIBDIR})
+endif ()
 
 if (BUILD_SHARED_LIB)
-  install (TARGETS phonenumber-shared LIBRARY DESTINATION lib/ ARCHIVE
-           DESTINATION lib/)
+  install (TARGETS phonenumber-shared LIBRARY DESTINATION ${LIBDIR} ARCHIVE
+           DESTINATION ${LIBDIR})
 endif ()
 
 if (${BUILD_GEOCODER} STREQUAL "ON")
-  install (TARGETS geocoding LIBRARY DESTINATION lib/ ARCHIVE DESTINATION lib/)
-  install (TARGETS geocoding-shared LIBRARY DESTINATION lib/ ARCHIVE
-           DESTINATION lib/)
+  install (TARGETS geocoding LIBRARY DESTINATION ${LIBDIR} ARCHIVE DESTINATION ${LIBDIR})
+  install (TARGETS geocoding-shared LIBRARY DESTINATION ${LIBDIR} ARCHIVE
+           DESTINATION ${LIBDIR})
 endif ()
 
 # Build an example program using geocoding, mainly to make sure that both
@@ -557,3 +602,17 @@ if (${BUILD_GEOCODER} STREQUAL "ON")
   )
   target_link_libraries (geocoding_test_program geocoding phonenumber)
 endif ()
+
+# Build an RPM
+set (CPACK_PACKAGE_VERSION ${libphonenumber_VERSION_MAJOR}.${libphonenumber_VERSION_MINOR}.${libphonenumber_VERSION_PATCH})
+set (CPACK_GENERATOR "RPM")
+set (CPACK_PACKAGE_NAME "libphonenumber")
+set (CPACK_RPM_PACKAGE_RELEASE 1)
+set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Google's phone number handling library")
+if (32BIT)
+  set (CPACK_RPM_PACKAGE_ARCHITECTURE i686)
+else ()
+  set (CPACK_RPM_PACKAGE_ARCHITECTURE x86_64)
+endif ()
+set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}.${CPACK_RPM_PACKAGE_ARCHITECTURE}")
+include (CPack)