From 17c10e0320ab608c400fd69d7efedac923de4284 Mon Sep 17 00:00:00 2001 From: David Hotham Date: Sun, 14 Dec 2014 14:27:12 +0000 Subject: [PATCH] RPM packaging --- cpp/CMakeLists.txt | 68 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 54 insertions(+), 14 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 3539b94..c705f79 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -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) -- 2.7.4