From 59329d03fd7eac6e5268fe51b64e0e8b1ecb8328 Mon Sep 17 00:00:00 2001 From: Gilles Vollant Date: Fri, 12 Jun 2020 12:05:05 +0200 Subject: [PATCH] =?UTF-8?q?Original=20commit=20from=20=20Timur=20Krist?= =?UTF-8?q?=C3=B3f=20(#2475)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add build option REGENERATE_METADATA to disable regenerating the metadata. --- cpp/CMakeLists.txt | 33 ++++++++++++++++++++++++--------- cpp/README | 9 +++++++++ 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 1e306ad59..696d888de 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -79,6 +79,7 @@ endfunction (find_required_program) # Options that can be passed to CMake using 'cmake -DKEY=VALUE'. option ("BUILD_GEOCODER" "Build the offline phone number geocoder" "ON") +option ("REGENERATE_METADATA" "Regenerate metadata instead of using it from the source tree" "ON") option ("USE_ALTERNATE_FORMATS" "Use alternate formats" "ON") option ("USE_BOOST" "Use Boost" "ON") option ("USE_ICU_REGEXP" "Use ICU regexp engine" "ON") @@ -145,8 +146,10 @@ endif () find_required_program (PROTOC protoc "Google Protocol Buffers compiler (protoc)") -find_required_program (JAVA java - "Java Runtime Environment") +if (${REGENERATE_METADATA} STREQUAL "ON") + find_required_program (JAVA java + "Java Runtime Environment") +endif () if (APPLE) FIND_LIBRARY (COREFOUNDATION_LIB CoreFoundation) @@ -286,14 +289,26 @@ function (add_metadata_gen_target TARGET_NAME set (JAR_PATH "${CMAKE_SOURCE_DIR}/../tools/java/cpp-build/target") set (JAR_PATH "${JAR_PATH}/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar") - add_custom_command ( - COMMAND ${JAVA_BIN} -jar - ${JAR_PATH} BuildMetadataCppFromXml ${XML_FILE} - ${CMAKE_SOURCE_DIR}/src/phonenumbers ${METADATA_TYPE} + if (${REGENERATE_METADATA} STREQUAL "ON") + add_custom_command ( + COMMAND ${JAVA_BIN} -jar + ${JAR_PATH} BuildMetadataCppFromXml ${XML_FILE} + ${CMAKE_SOURCE_DIR}/src/phonenumbers ${METADATA_TYPE} + + OUTPUT ${GEN_OUTPUT} + DEPENDS ${XML_FILE} + ) + else () + add_custom_command ( + COMMAND echo "skip metadata generation from" + ${XML_FILE} "to" + ${CMAKE_SOURCE_DIR}/src/phonenumbers ${METADATA_TYPE} + + OUTPUT ${GEN_OUTPUT} + DEPENDS ${XML_FILE} + ) + endif () - OUTPUT ${GEN_OUTPUT} - DEPENDS ${XML_FILE} - ) add_custom_target ( ${TARGET_NAME} DEPENDS ${GEN_OUTPUT} diff --git a/cpp/README b/cpp/README index ac94bbcd5..c46fa3351 100644 --- a/cpp/README +++ b/cpp/README @@ -365,3 +365,12 @@ Supported build parameters USE_RE2 = ON | OFF [OFF] -- Use RE2. USE_STD_MAP = ON | OFF [OFF] -- Force the use of std::map. USE_STDMUTEX = ON | OFF [OFF] -- Detect and use C++2011 for multi-threading. + REGENERATE_METADATA = ON | OFF [ON] -- When this is set to OFF it will skip + regenerating the metadata with + BuildMetadataCppFromXml. Since the + metadata is included in the source + tree anyway, it is beneficial for + packagers to turn this OFF: it saves + some time, and it also makes it + unnecessary to have java in the build + environment.