From 1e9666d5057de476580b729430fb22bee3bb77d8 Mon Sep 17 00:00:00 2001 From: Philip Liard Date: Wed, 27 Apr 2011 13:38:32 +0000 Subject: [PATCH] TOOLS: Update CMakeLists to auto-generate metadata for C++. --- cpp/CMakeLists.txt | 56 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 6eb1b505c..64390595f 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -79,6 +79,9 @@ check_library_version (PC_ICU icui18n 4.4) find_required_program (PROTOC protoc "Google Protocol Buffers compiler (protoc)") +find_required_program (JAVA java + "Java Runtime Environment") + # Add protoc (Protocol Buffers compiler) target. set (RESOURCES_DIR "${CMAKE_SOURCE_DIR}/../resources") @@ -109,6 +112,55 @@ add_custom_target ( COMMENT "Generating Protocol Buffers code" ) +# Add metadata code generation targets. + +# This function is invoked twice to create metadata & test metadata code +# generation targets. +function (add_metadata_gen_target TARGET_NAME + XML_FILE + FOR_TESTING) + if (${FOR_TESTING} STREQUAL "true") + set (GEN_OUTPUT_PREFIX "${CMAKE_SOURCE_DIR}/src/metadata") + elseif (${FOR_TESTING} STREQUAL "false") + set (GEN_OUTPUT_PREFIX "${CMAKE_SOURCE_DIR}/src/test_metadata") + else () + message (FATAL_ERROR + "Unexpected value '${FOR_TESTING}' for testing parameter") + endif () + + set (GEN_OUTPUT "${GEN_OUTPUT_PREFIX}.cc ${GEN_OUTPUT_PREFIX}.h") + 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 + ${FOR_TESTING} + + OUTPUT ${GEN_OUTPUT} + DEPENDS ${XML_FILE} + ) + add_custom_target ( + ${TARGET_NAME} + DEPENDS ${GEN_OUTPUT} + COMMENT "Generating Metadata code" + ) +endfunction (add_metadata_gen_target) + +# Add metadata generation target. +add_metadata_gen_target ( + "generate-metadata" + "${RESOURCES_DIR}/PhoneNumberMetaData.xml" + "false" +) + +# Add test metadata generation target. +add_metadata_gen_target ( + "generate-test-metadata" + "${RESOURCES_DIR}/PhoneNumberMetaDataForTesting.xml" + "true" +) + # Platform independent sources. set ( SOURCES @@ -119,7 +171,7 @@ set ( "src/base/threading/thread_restrictions.cc" "src/default_logger.cc" "src/logger_adapter.cc" - "src/metadata.cc" + "src/metadata.cc" # Generated by build tools. "src/phonemetadata.pb.cc" # Generated by Protocol Buffers. "src/phonenumber.cc" "src/phonenumber.pb.cc" # Generated by Protocol Buffers. @@ -181,7 +233,7 @@ set (TEST_SOURCES "src/re2_cache_test.cc" "src/run_tests.cc" "src/stringutil_test.cc" - "src/test_metadata.cc" + "src/test_metadata.cc" # Generated by build tools. ) add_executable (libphonenumber_test ${TEST_SOURCES})