1*1b3f573fSAndroid Build Coastguard Workerif(protobuf_VERBOSE) 2*1b3f573fSAndroid Build Coastguard Worker message(STATUS "Protocol Buffers Examples Configuring...") 3*1b3f573fSAndroid Build Coastguard Workerendif() 4*1b3f573fSAndroid Build Coastguard Worker 5*1b3f573fSAndroid Build Coastguard Workerget_filename_component(examples_dir "${protobuf_SOURCE_DIR}/examples" ABSOLUTE) 6*1b3f573fSAndroid Build Coastguard Worker 7*1b3f573fSAndroid Build Coastguard Workerif(protobuf_VERBOSE) 8*1b3f573fSAndroid Build Coastguard Worker message(STATUS "Protocol Buffers Examples Configuring done") 9*1b3f573fSAndroid Build Coastguard Workerendif() 10*1b3f573fSAndroid Build Coastguard Workerinclude(ExternalProject) 11*1b3f573fSAndroid Build Coastguard Worker 12*1b3f573fSAndroid Build Coastguard Worker# Internal utility function: Create a custom target representing a build of examples with custom options. 13*1b3f573fSAndroid Build Coastguard Workerfunction(add_examples_build NAME) 14*1b3f573fSAndroid Build Coastguard Worker 15*1b3f573fSAndroid Build Coastguard Worker ExternalProject_Add(${NAME} 16*1b3f573fSAndroid Build Coastguard Worker PREFIX ${NAME} 17*1b3f573fSAndroid Build Coastguard Worker SOURCE_DIR "${examples_dir}" 18*1b3f573fSAndroid Build Coastguard Worker BINARY_DIR ${NAME} 19*1b3f573fSAndroid Build Coastguard Worker STAMP_DIR ${NAME}/logs 20*1b3f573fSAndroid Build Coastguard Worker INSTALL_COMMAND "" #Skip 21*1b3f573fSAndroid Build Coastguard Worker LOG_CONFIGURE 1 22*1b3f573fSAndroid Build Coastguard Worker CMAKE_CACHE_ARGS "-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}" 23*1b3f573fSAndroid Build Coastguard Worker "-Dprotobuf_VERBOSE:BOOL=${protobuf_VERBOSE}" 24*1b3f573fSAndroid Build Coastguard Worker ${ARGN} 25*1b3f573fSAndroid Build Coastguard Worker ) 26*1b3f573fSAndroid Build Coastguard Worker set_property(TARGET ${NAME} PROPERTY FOLDER "Examples") 27*1b3f573fSAndroid Build Coastguard Worker set_property(TARGET ${NAME} PROPERTY EXCLUDE_FROM_ALL TRUE) 28*1b3f573fSAndroid Build Coastguard Workerendfunction() 29*1b3f573fSAndroid Build Coastguard Worker 30*1b3f573fSAndroid Build Coastguard Worker# Add examples as an external project. 31*1b3f573fSAndroid Build Coastguard Worker# sub_directory cannot be used because the find_package(protobuf) call would cause failures with redefined targets. 32*1b3f573fSAndroid Build Coastguard Workeradd_examples_build(examples "-Dprotobuf_DIR:PATH=${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}") 33*1b3f573fSAndroid Build Coastguard Workeradd_dependencies(examples libprotobuf protoc) 34*1b3f573fSAndroid Build Coastguard Worker 35*1b3f573fSAndroid Build Coastguard Workeroption(protobuf_BUILD_EXAMPLES_MULTITEST "Build Examples in multiple configurations. Useful for testing." OFF) 36*1b3f573fSAndroid Build Coastguard Workermark_as_advanced(protobuf_BUILD_EXAMPLES_MULTITEST) 37*1b3f573fSAndroid Build Coastguard Workerif(protobuf_BUILD_EXAMPLES_MULTITEST) 38*1b3f573fSAndroid Build Coastguard Worker set_property(GLOBAL PROPERTY USE_FOLDERS ON) 39*1b3f573fSAndroid Build Coastguard Worker 40*1b3f573fSAndroid Build Coastguard Worker #Build using the legacy compatibility module. 41*1b3f573fSAndroid Build Coastguard Worker add_examples_build(examples-legacy 42*1b3f573fSAndroid Build Coastguard Worker "-Dprotobuf_DIR:PATH=${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}" 43*1b3f573fSAndroid Build Coastguard Worker "-Dprotobuf_MODULE_COMPATIBLE:BOOL=TRUE" 44*1b3f573fSAndroid Build Coastguard Worker ) 45*1b3f573fSAndroid Build Coastguard Worker add_dependencies(examples-legacy libprotobuf protoc) 46*1b3f573fSAndroid Build Coastguard Worker 47*1b3f573fSAndroid Build Coastguard Worker #Build using the installed library. 48*1b3f573fSAndroid Build Coastguard Worker add_examples_build(examples-installed 49*1b3f573fSAndroid Build Coastguard Worker "-Dprotobuf_DIR:PATH=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" 50*1b3f573fSAndroid Build Coastguard Worker ) 51*1b3f573fSAndroid Build Coastguard Worker 52*1b3f573fSAndroid Build Coastguard Worker #Build using the installed library in legacy compatibility mode. 53*1b3f573fSAndroid Build Coastguard Worker add_examples_build(examples-installed-legacy 54*1b3f573fSAndroid Build Coastguard Worker "-Dprotobuf_DIR:PATH=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" 55*1b3f573fSAndroid Build Coastguard Worker "-Dprotobuf_MODULE_COMPATIBLE:BOOL=TRUE" 56*1b3f573fSAndroid Build Coastguard Worker ) 57*1b3f573fSAndroid Build Coastguard Workerendif() 58