xref: /aosp_15_r20/external/protobuf/cmake/examples.cmake (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
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