RPM packaging
authorDavid Hotham <david.hotham@metaswitch.com>
Sun, 14 Dec 2014 14:27:12 +0000 (14:27 +0000)
committerYoungjae Shin <yj99.shin@samsung.com>
Tue, 9 Jun 2015 11:43:24 +0000 (20:43 +0900)
cpp/CMakeLists.txt

index 3539b94..c705f79 100644 (file)
@@ -19,6 +19,15 @@ cmake_minimum_required (VERSION 2.8)
 project (libphonenumber)
 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")
@@ -336,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})
@@ -374,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
@@ -404,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})
@@ -554,17 +570,27 @@ install (FILES
 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
@@ -576,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)