xref: /aosp_15_r20/external/flatbuffers/CMake/CMakeLists_legacy.cmake.in (revision 890232f25432b36107d06881e0a25aaa6b473652)
1*890232f2SAndroid Build Coastguard Worker# This was the legacy <root>/CMakeLists.txt that supported cmake version 2.8.12.
2*890232f2SAndroid Build Coastguard Worker# It was originally copied on Jan 30 2022, and is conditionally included in the
3*890232f2SAndroid Build Coastguard Worker# current <root>/CMakeLists.txt if the cmake version used is older than the new
4*890232f2SAndroid Build Coastguard Worker# minimum version.
5*890232f2SAndroid Build Coastguard Worker#
6*890232f2SAndroid Build Coastguard Worker# Only add to this file to fix immediate issues or if a change cannot be made
7*890232f2SAndroid Build Coastguard Worker# <root>/CMakeList.txt in a compatible way.
8*890232f2SAndroid Build Coastguard Worker
9*890232f2SAndroid Build Coastguard Workerif (POLICY CMP0048)
10*890232f2SAndroid Build Coastguard Worker  cmake_policy(SET CMP0048 NEW)
11*890232f2SAndroid Build Coastguard Worker  if(CMAKE_VERSION VERSION_LESS 3.9)
12*890232f2SAndroid Build Coastguard Worker    project(FlatBuffers
13*890232f2SAndroid Build Coastguard Worker      VERSION 2.0.0
14*890232f2SAndroid Build Coastguard Worker      LANGUAGES CXX)
15*890232f2SAndroid Build Coastguard Worker  else()
16*890232f2SAndroid Build Coastguard Worker    project(FlatBuffers
17*890232f2SAndroid Build Coastguard Worker      DESCRIPTION "Flatbuffers serialization library"
18*890232f2SAndroid Build Coastguard Worker      VERSION 2.0.0
19*890232f2SAndroid Build Coastguard Worker      LANGUAGES CXX)
20*890232f2SAndroid Build Coastguard Worker  endif()
21*890232f2SAndroid Build Coastguard Workerelse()
22*890232f2SAndroid Build Coastguard Worker  project(FlatBuffers)
23*890232f2SAndroid Build Coastguard Workerendif (POLICY CMP0048)
24*890232f2SAndroid Build Coastguard Worker
25*890232f2SAndroid Build Coastguard Workerinclude(CMake/Version.cmake)
26*890232f2SAndroid Build Coastguard Worker
27*890232f2SAndroid Build Coastguard Worker# generate compile_commands.json
28*890232f2SAndroid Build Coastguard Workerset(CMAKE_EXPORT_COMPILE_COMMANDS ON)
29*890232f2SAndroid Build Coastguard Worker
30*890232f2SAndroid Build Coastguard Worker# NOTE: Code coverage only works on Linux & OSX.
31*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_CODE_COVERAGE "Enable the code coverage build option." OFF)
32*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_BUILD_TESTS "Enable the build of tests and samples." ON)
33*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_INSTALL "Enable the installation of targets." ON)
34*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_BUILD_FLATLIB "Enable the build of the flatbuffers library"
35*890232f2SAndroid Build Coastguard Worker       ON)
36*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_BUILD_FLATC "Enable the build of the flatbuffers compiler"
37*890232f2SAndroid Build Coastguard Worker       ON)
38*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_STATIC_FLATC "Build flatbuffers compiler with -static flag"
39*890232f2SAndroid Build Coastguard Worker       OFF)
40*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_BUILD_FLATHASH "Enable the build of flathash" ON)
41*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_BUILD_BENCHMARKS "Enable the build of flatbenchmark. \"
42*890232f2SAndroid Build Coastguard Worker       Requires C++11."
43*890232f2SAndroid Build Coastguard Worker       OFF)
44*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_BUILD_GRPCTEST "Enable the build of grpctest" OFF)
45*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_BUILD_SHAREDLIB
46*890232f2SAndroid Build Coastguard Worker       "Enable the build of the flatbuffers shared library"
47*890232f2SAndroid Build Coastguard Worker       OFF)
48*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_LIBCXX_WITH_CLANG "Force libc++ when using Clang" ON)
49*890232f2SAndroid Build Coastguard Worker# NOTE: Sanitizer check only works on Linux & OSX (gcc & llvm).
50*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_CODE_SANITIZE
51*890232f2SAndroid Build Coastguard Worker      "Add '-fsanitize' flags to 'flattests' and 'flatc' targets."
52*890232f2SAndroid Build Coastguard Worker      OFF)
53*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_PACKAGE_REDHAT
54*890232f2SAndroid Build Coastguard Worker       "Build an rpm using the 'package' target."
55*890232f2SAndroid Build Coastguard Worker       OFF)
56*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_PACKAGE_DEBIAN
57*890232f2SAndroid Build Coastguard Worker       "Build an deb using the 'package' target."
58*890232f2SAndroid Build Coastguard Worker       OFF)
59*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_BUILD_CPP17
60*890232f2SAndroid Build Coastguard Worker       "Enable the build of c++17 test target. \"
61*890232f2SAndroid Build Coastguard Worker       Requirements: Clang6, GCC7, MSVC2017 (_MSC_VER >= 1914)  or higher."
62*890232f2SAndroid Build Coastguard Worker       OFF)
63*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_BUILD_LEGACY
64*890232f2SAndroid Build Coastguard Worker       "Run C++ code generator with '--cpp-std c++0x' switch."
65*890232f2SAndroid Build Coastguard Worker       OFF)
66*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_ENABLE_PCH
67*890232f2SAndroid Build Coastguard Worker       "Enable precompile headers support for 'flatbuffers' and 'flatc'. \"
68*890232f2SAndroid Build Coastguard Worker        Only work if CMake supports 'target_precompile_headers'. \"
69*890232f2SAndroid Build Coastguard Worker        This can speed up compilation time."
70*890232f2SAndroid Build Coastguard Worker       OFF)
71*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_SKIP_MONSTER_EXTRA
72*890232f2SAndroid Build Coastguard Worker      "Skip generating monster_extra.fbs that contains non-supported numerical\"
73*890232f2SAndroid Build Coastguard Worker      types." OFF)
74*890232f2SAndroid Build Coastguard Workeroption(FLATBUFFERS_OSX_BUILD_UNIVERSAL
75*890232f2SAndroid Build Coastguard Worker      "Enable the build for multiple architectures on OS X (arm64, x86_64)."
76*890232f2SAndroid Build Coastguard Worker      ON)
77*890232f2SAndroid Build Coastguard Worker
78*890232f2SAndroid Build Coastguard Workerif(NOT FLATBUFFERS_BUILD_FLATC AND FLATBUFFERS_BUILD_TESTS)
79*890232f2SAndroid Build Coastguard Worker    message(WARNING
80*890232f2SAndroid Build Coastguard Worker    "Cannot build tests without building the compiler. Tests will be disabled.")
81*890232f2SAndroid Build Coastguard Worker    set(FLATBUFFERS_BUILD_TESTS OFF)
82*890232f2SAndroid Build Coastguard Workerendif()
83*890232f2SAndroid Build Coastguard Worker
84*890232f2SAndroid Build Coastguard Workerif(DEFINED FLATBUFFERS_MAX_PARSING_DEPTH)
85*890232f2SAndroid Build Coastguard Worker  # Override the default recursion depth limit.
86*890232f2SAndroid Build Coastguard Worker  add_definitions(-DFLATBUFFERS_MAX_PARSING_DEPTH=${FLATBUFFERS_MAX_PARSING_DEPTH})
87*890232f2SAndroid Build Coastguard Worker  message(STATUS "FLATBUFFERS_MAX_PARSING_DEPTH: ${FLATBUFFERS_MAX_PARSING_DEPTH}")
88*890232f2SAndroid Build Coastguard Workerendif()
89*890232f2SAndroid Build Coastguard Worker
90*890232f2SAndroid Build Coastguard Worker# Auto-detect locale-narrow 'strtod_l' and  'strtoull_l' functions.
91*890232f2SAndroid Build Coastguard Workerif(NOT DEFINED FLATBUFFERS_LOCALE_INDEPENDENT)
92*890232f2SAndroid Build Coastguard Worker  include(CheckCXXSymbolExists)
93*890232f2SAndroid Build Coastguard Worker
94*890232f2SAndroid Build Coastguard Worker  set(FLATBUFFERS_LOCALE_INDEPENDENT 0)
95*890232f2SAndroid Build Coastguard Worker  if(MSVC)
96*890232f2SAndroid Build Coastguard Worker    check_cxx_symbol_exists(_strtof_l stdlib.h FLATBUFFERS_HAS_STRTOF_L)
97*890232f2SAndroid Build Coastguard Worker    check_cxx_symbol_exists(_strtoui64_l stdlib.h FLATBUFFERS_HAS_STRTOULL_L)
98*890232f2SAndroid Build Coastguard Worker  else()
99*890232f2SAndroid Build Coastguard Worker    check_cxx_symbol_exists(strtof_l stdlib.h FLATBUFFERS_HAS_STRTOF_L)
100*890232f2SAndroid Build Coastguard Worker    check_cxx_symbol_exists(strtoull_l stdlib.h FLATBUFFERS_HAS_STRTOULL_L)
101*890232f2SAndroid Build Coastguard Worker  endif()
102*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_HAS_STRTOF_L AND FLATBUFFERS_HAS_STRTOULL_L)
103*890232f2SAndroid Build Coastguard Worker    set(FLATBUFFERS_LOCALE_INDEPENDENT 1)
104*890232f2SAndroid Build Coastguard Worker  endif()
105*890232f2SAndroid Build Coastguard Workerendif()
106*890232f2SAndroid Build Coastguard Workeradd_definitions(-DFLATBUFFERS_LOCALE_INDEPENDENT=$<BOOL:${FLATBUFFERS_LOCALE_INDEPENDENT}>)
107*890232f2SAndroid Build Coastguard Worker
108*890232f2SAndroid Build Coastguard Workerset(FlatBuffers_Library_SRCS
109*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/allocator.h
110*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/array.h
111*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/base.h
112*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/bfbs_generator.h
113*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/buffer.h
114*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/buffer_ref.h
115*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/default_allocator.h
116*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/detached_buffer.h
117*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/flatbuffer_builder.h
118*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/flatbuffers.h
119*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/flexbuffers.h
120*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/hash.h
121*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/idl.h
122*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/minireflect.h
123*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/reflection.h
124*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/reflection_generated.h
125*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/registry.h
126*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/stl_emulation.h
127*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/string.h
128*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/struct.h
129*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/table.h
130*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/util.h
131*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/vector.h
132*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/vector_downward.h
133*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/verifier.h
134*890232f2SAndroid Build Coastguard Worker  src/idl_parser.cpp
135*890232f2SAndroid Build Coastguard Worker  src/idl_gen_text.cpp
136*890232f2SAndroid Build Coastguard Worker  src/reflection.cpp
137*890232f2SAndroid Build Coastguard Worker  src/util.cpp
138*890232f2SAndroid Build Coastguard Worker)
139*890232f2SAndroid Build Coastguard Worker
140*890232f2SAndroid Build Coastguard Workerset(FlatBuffers_Compiler_SRCS
141*890232f2SAndroid Build Coastguard Worker  ${FlatBuffers_Library_SRCS}
142*890232f2SAndroid Build Coastguard Worker  src/idl_gen_cpp.cpp
143*890232f2SAndroid Build Coastguard Worker  src/idl_gen_csharp.cpp
144*890232f2SAndroid Build Coastguard Worker  src/idl_gen_dart.cpp
145*890232f2SAndroid Build Coastguard Worker  src/idl_gen_kotlin.cpp
146*890232f2SAndroid Build Coastguard Worker  src/idl_gen_go.cpp
147*890232f2SAndroid Build Coastguard Worker  src/idl_gen_java.cpp
148*890232f2SAndroid Build Coastguard Worker  src/idl_gen_ts.cpp
149*890232f2SAndroid Build Coastguard Worker  src/idl_gen_php.cpp
150*890232f2SAndroid Build Coastguard Worker  src/idl_gen_python.cpp
151*890232f2SAndroid Build Coastguard Worker  src/idl_gen_lobster.cpp
152*890232f2SAndroid Build Coastguard Worker  src/idl_gen_lua.cpp
153*890232f2SAndroid Build Coastguard Worker  src/idl_gen_rust.cpp
154*890232f2SAndroid Build Coastguard Worker  src/idl_gen_fbs.cpp
155*890232f2SAndroid Build Coastguard Worker  src/idl_gen_grpc.cpp
156*890232f2SAndroid Build Coastguard Worker  src/idl_gen_json_schema.cpp
157*890232f2SAndroid Build Coastguard Worker  src/idl_gen_swift.cpp
158*890232f2SAndroid Build Coastguard Worker  src/flatc.cpp
159*890232f2SAndroid Build Coastguard Worker  src/flatc_main.cpp
160*890232f2SAndroid Build Coastguard Worker  src/bfbs_gen.h
161*890232f2SAndroid Build Coastguard Worker  src/bfbs_gen_lua.h
162*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/code_generators.h
163*890232f2SAndroid Build Coastguard Worker  src/bfbs_gen_lua.cpp
164*890232f2SAndroid Build Coastguard Worker  src/code_generators.cpp
165*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/schema_interface.h
166*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/cpp_generator.h
167*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/cpp_generator.cc
168*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/go_generator.h
169*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/go_generator.cc
170*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/java_generator.h
171*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/java_generator.cc
172*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/python_generator.h
173*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/python_generator.cc
174*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/swift_generator.h
175*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/swift_generator.cc
176*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/ts_generator.h
177*890232f2SAndroid Build Coastguard Worker  grpc/src/compiler/ts_generator.cc
178*890232f2SAndroid Build Coastguard Worker)
179*890232f2SAndroid Build Coastguard Worker
180*890232f2SAndroid Build Coastguard Workerset(FlatHash_SRCS
181*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/hash.h
182*890232f2SAndroid Build Coastguard Worker  src/flathash.cpp
183*890232f2SAndroid Build Coastguard Worker)
184*890232f2SAndroid Build Coastguard Worker
185*890232f2SAndroid Build Coastguard Workerset(FlatBuffers_Tests_SRCS
186*890232f2SAndroid Build Coastguard Worker  ${FlatBuffers_Library_SRCS}
187*890232f2SAndroid Build Coastguard Worker  src/idl_gen_fbs.cpp
188*890232f2SAndroid Build Coastguard Worker  tests/test.cpp
189*890232f2SAndroid Build Coastguard Worker  tests/test_assert.h
190*890232f2SAndroid Build Coastguard Worker  tests/test_assert.cpp
191*890232f2SAndroid Build Coastguard Worker  tests/test_builder.h
192*890232f2SAndroid Build Coastguard Worker  tests/test_builder.cpp
193*890232f2SAndroid Build Coastguard Worker  tests/native_type_test_impl.h
194*890232f2SAndroid Build Coastguard Worker  tests/native_type_test_impl.cpp
195*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/code_generators.h
196*890232f2SAndroid Build Coastguard Worker  src/code_generators.cpp
197*890232f2SAndroid Build Coastguard Worker  # file generate by running compiler on tests/monster_test.fbs
198*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_generated.h
199*890232f2SAndroid Build Coastguard Worker  # file generate by running compiler on namespace_test/namespace_test1.fbs
200*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/namespace_test/namespace_test1_generated.h
201*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/namespace_test/namespace_test2_generated.h
202*890232f2SAndroid Build Coastguard Worker  # file generate by running compiler on union_vector/union_vector.fbs
203*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/union_vector/union_vector_generated.h
204*890232f2SAndroid Build Coastguard Worker  # file generate by running compiler on tests/arrays_test.fbs
205*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/arrays_test_generated.h
206*890232f2SAndroid Build Coastguard Worker  # file generate by running compiler on tests/native_type_test.fbs
207*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/native_type_test_generated.h
208*890232f2SAndroid Build Coastguard Worker  # file generate by running compiler on tests/monster_extra.fbs
209*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/monster_extra_generated.h
210*890232f2SAndroid Build Coastguard Worker  # file generate by running compiler on tests/monster_test.fbs
211*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_bfbs_generated.h
212*890232f2SAndroid Build Coastguard Worker  # file generate by running compiler on tests/optional_scalars.fbs
213*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/optional_scalars_generated.h
214*890232f2SAndroid Build Coastguard Worker)
215*890232f2SAndroid Build Coastguard Worker
216*890232f2SAndroid Build Coastguard Workerset(FlatBuffers_Tests_CPP17_SRCS
217*890232f2SAndroid Build Coastguard Worker  ${FlatBuffers_Library_SRCS}
218*890232f2SAndroid Build Coastguard Worker  tests/test_assert.h
219*890232f2SAndroid Build Coastguard Worker  tests/test_assert.cpp
220*890232f2SAndroid Build Coastguard Worker  tests/cpp17/test_cpp17.cpp
221*890232f2SAndroid Build Coastguard Worker  # file generate by running compiler on tests/monster_test.fbs
222*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/cpp17/generated_cpp17/monster_test_generated.h
223*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_generated.h
224*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/cpp17/generated_cpp17/optional_scalars_generated.h
225*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/optional_scalars_generated.h
226*890232f2SAndroid Build Coastguard Worker)
227*890232f2SAndroid Build Coastguard Worker
228*890232f2SAndroid Build Coastguard Workerset(FlatBuffers_Sample_Binary_SRCS
229*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/flatbuffers.h
230*890232f2SAndroid Build Coastguard Worker  samples/sample_binary.cpp
231*890232f2SAndroid Build Coastguard Worker  # file generated by running compiler on samples/monster.fbs
232*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
233*890232f2SAndroid Build Coastguard Worker)
234*890232f2SAndroid Build Coastguard Worker
235*890232f2SAndroid Build Coastguard Workerset(FlatBuffers_Sample_Text_SRCS
236*890232f2SAndroid Build Coastguard Worker  ${FlatBuffers_Library_SRCS}
237*890232f2SAndroid Build Coastguard Worker  samples/sample_text.cpp
238*890232f2SAndroid Build Coastguard Worker  # file generated by running compiler on samples/monster.fbs
239*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
240*890232f2SAndroid Build Coastguard Worker)
241*890232f2SAndroid Build Coastguard Worker
242*890232f2SAndroid Build Coastguard Workerset(FlatBuffers_Sample_BFBS_SRCS
243*890232f2SAndroid Build Coastguard Worker  ${FlatBuffers_Library_SRCS}
244*890232f2SAndroid Build Coastguard Worker  samples/sample_bfbs.cpp
245*890232f2SAndroid Build Coastguard Worker  # file generated by running compiler on samples/monster.fbs
246*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
247*890232f2SAndroid Build Coastguard Worker)
248*890232f2SAndroid Build Coastguard Worker
249*890232f2SAndroid Build Coastguard Workerset(FlatBuffers_GRPCTest_SRCS
250*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/flatbuffers.h
251*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/grpc.h
252*890232f2SAndroid Build Coastguard Worker  include/flatbuffers/util.h
253*890232f2SAndroid Build Coastguard Worker  src/util.cpp
254*890232f2SAndroid Build Coastguard Worker  tests/monster_test.grpc.fb.h
255*890232f2SAndroid Build Coastguard Worker  tests/test_assert.h
256*890232f2SAndroid Build Coastguard Worker  tests/test_builder.h
257*890232f2SAndroid Build Coastguard Worker  tests/monster_test.grpc.fb.cc
258*890232f2SAndroid Build Coastguard Worker  tests/test_assert.cpp
259*890232f2SAndroid Build Coastguard Worker  tests/test_builder.cpp
260*890232f2SAndroid Build Coastguard Worker  grpc/tests/grpctest.cpp
261*890232f2SAndroid Build Coastguard Worker  grpc/tests/message_builder_test.cpp
262*890232f2SAndroid Build Coastguard Worker  # file generate by running compiler on tests/monster_test.fbs
263*890232f2SAndroid Build Coastguard Worker  ${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_generated.h
264*890232f2SAndroid Build Coastguard Worker)
265*890232f2SAndroid Build Coastguard Worker
266*890232f2SAndroid Build Coastguard Worker# source_group(Compiler FILES ${FlatBuffers_Compiler_SRCS})
267*890232f2SAndroid Build Coastguard Worker# source_group(Tests FILES ${FlatBuffers_Tests_SRCS})
268*890232f2SAndroid Build Coastguard Worker
269*890232f2SAndroid Build Coastguard Workerif(EXISTS "${CMAKE_TOOLCHAIN_FILE}")
270*890232f2SAndroid Build Coastguard Worker  # do not apply any global settings if the toolchain
271*890232f2SAndroid Build Coastguard Worker  # is being configured externally
272*890232f2SAndroid Build Coastguard Worker  message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}.")
273*890232f2SAndroid Build Coastguard Workerelseif(CMAKE_COMPILER_IS_GNUCXX)
274*890232f2SAndroid Build Coastguard Worker  if(CYGWIN)
275*890232f2SAndroid Build Coastguard Worker    set(CMAKE_CXX_FLAGS
276*890232f2SAndroid Build Coastguard Worker      "${CMAKE_CXX_FLAGS} -std=gnu++11")
277*890232f2SAndroid Build Coastguard Worker  else(CYGWIN)
278*890232f2SAndroid Build Coastguard Worker    set(CMAKE_CXX_FLAGS
279*890232f2SAndroid Build Coastguard Worker      "${CMAKE_CXX_FLAGS} -std=c++0x")
280*890232f2SAndroid Build Coastguard Worker  endif(CYGWIN)
281*890232f2SAndroid Build Coastguard Worker  set(CMAKE_CXX_FLAGS
282*890232f2SAndroid Build Coastguard Worker    "${CMAKE_CXX_FLAGS} -Wall -pedantic -Werror -Wextra -Werror=shadow")
283*890232f2SAndroid Build Coastguard Worker  set(FLATBUFFERS_PRIVATE_CXX_FLAGS "-Wold-style-cast")
284*890232f2SAndroid Build Coastguard Worker  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.4)
285*890232f2SAndroid Build Coastguard Worker    if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
286*890232f2SAndroid Build Coastguard Worker      set(CMAKE_CXX_FLAGS
287*890232f2SAndroid Build Coastguard Worker        "${CMAKE_CXX_FLAGS} -faligned-new -Werror=implicit-fallthrough=2")
288*890232f2SAndroid Build Coastguard Worker    endif()
289*890232f2SAndroid Build Coastguard Worker    set(CMAKE_CXX_FLAGS
290*890232f2SAndroid Build Coastguard Worker      "${CMAKE_CXX_FLAGS} -Wunused-result -Werror=unused-result -Wunused-parameter -Werror=unused-parameter")
291*890232f2SAndroid Build Coastguard Worker  endif()
292*890232f2SAndroid Build Coastguard Worker
293*890232f2SAndroid Build Coastguard Worker  # Certain platforms such as ARM do not use signed chars by default
294*890232f2SAndroid Build Coastguard Worker  # which causes issues with certain bounds checks.
295*890232f2SAndroid Build Coastguard Worker  set(CMAKE_CXX_FLAGS
296*890232f2SAndroid Build Coastguard Worker    "${CMAKE_CXX_FLAGS} -fsigned-char")
297*890232f2SAndroid Build Coastguard Worker
298*890232f2SAndroid Build Coastguard Worker# MSVC **MUST** come before the Clang check, as clang-cl is flagged by CMake as "MSVC", but it still textually
299*890232f2SAndroid Build Coastguard Worker# matches as Clang in its Compiler Id :)
300*890232f2SAndroid Build Coastguard Worker# Note: in CMake >= 3.14 we can check CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "GNU" or "MSVC" to differentiate...
301*890232f2SAndroid Build Coastguard Workerelseif(MSVC)
302*890232f2SAndroid Build Coastguard Worker  # Visual Studio pedantic build settings
303*890232f2SAndroid Build Coastguard Worker  # warning C4512: assignment operator could not be generated
304*890232f2SAndroid Build Coastguard Worker  # warning C4316: object allocated on the heap may not be aligned
305*890232f2SAndroid Build Coastguard Worker  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /WX /wd4512 /wd4316")
306*890232f2SAndroid Build Coastguard Worker
307*890232f2SAndroid Build Coastguard Worker  if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
308*890232f2SAndroid Build Coastguard Worker    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_CRT_SECURE_NO_WARNINGS")
309*890232f2SAndroid Build Coastguard Worker  endif()
310*890232f2SAndroid Build Coastguard Worker
311*890232f2SAndroid Build Coastguard Workerelseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
312*890232f2SAndroid Build Coastguard Worker  if(APPLE)
313*890232f2SAndroid Build Coastguard Worker    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
314*890232f2SAndroid Build Coastguard Worker
315*890232f2SAndroid Build Coastguard Worker    if(FLATBUFFERS_OSX_BUILD_UNIVERSAL)
316*890232f2SAndroid Build Coastguard Worker      set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64")
317*890232f2SAndroid Build Coastguard Worker    endif()
318*890232f2SAndroid Build Coastguard Worker  else()
319*890232f2SAndroid Build Coastguard Worker    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
320*890232f2SAndroid Build Coastguard Worker  endif()
321*890232f2SAndroid Build Coastguard Worker
322*890232f2SAndroid Build Coastguard Worker  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Werror -Wextra -Wno-unused-parameter")
323*890232f2SAndroid Build Coastguard Worker  set(FLATBUFFERS_PRIVATE_CXX_FLAGS "-Wold-style-cast")
324*890232f2SAndroid Build Coastguard Worker  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.8)
325*890232f2SAndroid Build Coastguard Worker    list(APPEND FLATBUFFERS_PRIVATE_CXX_FLAGS "-Wimplicit-fallthrough" "-Wextra-semi" "-Werror=unused-private-field") # enable warning
326*890232f2SAndroid Build Coastguard Worker  endif()
327*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_LIBCXX_WITH_CLANG)
328*890232f2SAndroid Build Coastguard Worker    if(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
329*890232f2SAndroid Build Coastguard Worker      set(CMAKE_CXX_FLAGS
330*890232f2SAndroid Build Coastguard Worker          "${CMAKE_CXX_FLAGS} -stdlib=libc++")
331*890232f2SAndroid Build Coastguard Worker    endif()
332*890232f2SAndroid Build Coastguard Worker    if(NOT ("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD" OR
333*890232f2SAndroid Build Coastguard Worker            "${CMAKE_SYSTEM_NAME}" MATCHES "Linux"))
334*890232f2SAndroid Build Coastguard Worker      set(CMAKE_EXE_LINKER_FLAGS
335*890232f2SAndroid Build Coastguard Worker          "${CMAKE_EXE_LINKER_FLAGS} -lc++abi")
336*890232f2SAndroid Build Coastguard Worker    endif()
337*890232f2SAndroid Build Coastguard Worker  endif()
338*890232f2SAndroid Build Coastguard Worker
339*890232f2SAndroid Build Coastguard Worker  # Certain platforms such as ARM do not use signed chars by default
340*890232f2SAndroid Build Coastguard Worker  # which causes issues with certain bounds checks.
341*890232f2SAndroid Build Coastguard Worker  set(CMAKE_CXX_FLAGS
342*890232f2SAndroid Build Coastguard Worker    "${CMAKE_CXX_FLAGS} -fsigned-char")
343*890232f2SAndroid Build Coastguard Worker
344*890232f2SAndroid Build Coastguard Workerendif()
345*890232f2SAndroid Build Coastguard Worker
346*890232f2SAndroid Build Coastguard Worker# Append FLATBUFFERS_CXX_FLAGS to CMAKE_CXX_FLAGS.
347*890232f2SAndroid Build Coastguard Workerif(DEFINED FLATBUFFERS_CXX_FLAGS AND NOT EXISTS "${CMAKE_TOOLCHAIN_FILE}")
348*890232f2SAndroid Build Coastguard Worker  message(STATUS "extend CXX_FLAGS with ${FLATBUFFERS_CXX_FLAGS}")
349*890232f2SAndroid Build Coastguard Worker  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLATBUFFERS_CXX_FLAGS}")
350*890232f2SAndroid Build Coastguard Workerendif()
351*890232f2SAndroid Build Coastguard Workermessage(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
352*890232f2SAndroid Build Coastguard Worker
353*890232f2SAndroid Build Coastguard Workerif(FLATBUFFERS_CODE_COVERAGE)
354*890232f2SAndroid Build Coastguard Worker  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fprofile-arcs -ftest-coverage")
355*890232f2SAndroid Build Coastguard Worker  set(CMAKE_EXE_LINKER_FLAGS
356*890232f2SAndroid Build Coastguard Worker      "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
357*890232f2SAndroid Build Coastguard Workerendif()
358*890232f2SAndroid Build Coastguard Worker
359*890232f2SAndroid Build Coastguard Workerfunction(add_fsanitize_to_target _target _sanitizer)
360*890232f2SAndroid Build Coastguard Worker  if(WIN32)
361*890232f2SAndroid Build Coastguard Worker    target_compile_definitions(${_target} PRIVATE FLATBUFFERS_MEMORY_LEAK_TRACKING)
362*890232f2SAndroid Build Coastguard Worker    message(STATUS "Sanitizer MSVC::_CrtDumpMemoryLeaks added to ${_target}")
363*890232f2SAndroid Build Coastguard Worker  else()
364*890232f2SAndroid Build Coastguard Worker    # FLATBUFFERS_CODE_SANITIZE: boolean {ON,OFF,YES,NO} or string with list of sanitizer.
365*890232f2SAndroid Build Coastguard Worker    # List of sanitizer is string starts with '=': "=address,undefined,thread,memory".
366*890232f2SAndroid Build Coastguard Worker    if((${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") OR
367*890232f2SAndroid Build Coastguard Worker      ((${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9"))
368*890232f2SAndroid Build Coastguard Worker    )
369*890232f2SAndroid Build Coastguard Worker      set(_sanitizer_flags "=address,undefined")
370*890232f2SAndroid Build Coastguard Worker      if(_sanitizer MATCHES "=.*")
371*890232f2SAndroid Build Coastguard Worker        # override default by user-defined sanitizer list
372*890232f2SAndroid Build Coastguard Worker        set(_sanitizer_flags ${_sanitizer})
373*890232f2SAndroid Build Coastguard Worker      endif()
374*890232f2SAndroid Build Coastguard Worker      target_compile_options(${_target} PRIVATE
375*890232f2SAndroid Build Coastguard Worker        -g -fsigned-char -fno-omit-frame-pointer
376*890232f2SAndroid Build Coastguard Worker        "-fsanitize${_sanitizer_flags}")
377*890232f2SAndroid Build Coastguard Worker      target_link_libraries(${_target} PRIVATE
378*890232f2SAndroid Build Coastguard Worker        "-fsanitize${_sanitizer_flags}")
379*890232f2SAndroid Build Coastguard Worker      set_property(TARGET ${_target} PROPERTY POSITION_INDEPENDENT_CODE ON)
380*890232f2SAndroid Build Coastguard Worker      message(STATUS "Sanitizer ${_sanitizer_flags} added to ${_target}")
381*890232f2SAndroid Build Coastguard Worker    endif()
382*890232f2SAndroid Build Coastguard Worker  endif()
383*890232f2SAndroid Build Coastguard Workerendfunction()
384*890232f2SAndroid Build Coastguard Worker
385*890232f2SAndroid Build Coastguard Workerfunction(add_pch_to_target _target _pch_header)
386*890232f2SAndroid Build Coastguard Worker  if(COMMAND target_precompile_headers)
387*890232f2SAndroid Build Coastguard Worker    target_precompile_headers(${_target} PRIVATE ${_pch_header})
388*890232f2SAndroid Build Coastguard Worker    if(NOT MSVC)
389*890232f2SAndroid Build Coastguard Worker      set_source_files_properties(src/util.cpp PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
390*890232f2SAndroid Build Coastguard Worker    endif()
391*890232f2SAndroid Build Coastguard Worker  endif()
392*890232f2SAndroid Build Coastguard Workerendfunction()
393*890232f2SAndroid Build Coastguard Worker
394*890232f2SAndroid Build Coastguard Workerif(BIICODE)
395*890232f2SAndroid Build Coastguard Worker  include(biicode/cmake/biicode.cmake)
396*890232f2SAndroid Build Coastguard Worker  return()
397*890232f2SAndroid Build Coastguard Workerendif()
398*890232f2SAndroid Build Coastguard Worker
399*890232f2SAndroid Build Coastguard Workerinclude_directories(include)
400*890232f2SAndroid Build Coastguard Workerinclude_directories(grpc)
401*890232f2SAndroid Build Coastguard Worker
402*890232f2SAndroid Build Coastguard Workerif(FLATBUFFERS_BUILD_FLATLIB)
403*890232f2SAndroid Build Coastguard Worker  add_library(flatbuffers STATIC ${FlatBuffers_Library_SRCS})
404*890232f2SAndroid Build Coastguard Worker  # Attach header directory for when build via add_subdirectory().
405*890232f2SAndroid Build Coastguard Worker  target_include_directories(flatbuffers INTERFACE
406*890232f2SAndroid Build Coastguard Worker    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
407*890232f2SAndroid Build Coastguard Worker  target_compile_options(flatbuffers PRIVATE "${FLATBUFFERS_PRIVATE_CXX_FLAGS}")
408*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_ENABLE_PCH)
409*890232f2SAndroid Build Coastguard Worker    add_pch_to_target(flatbuffers include/flatbuffers/pch/pch.h)
410*890232f2SAndroid Build Coastguard Worker  endif()
411*890232f2SAndroid Build Coastguard Workerendif()
412*890232f2SAndroid Build Coastguard Worker
413*890232f2SAndroid Build Coastguard Workerif(FLATBUFFERS_BUILD_FLATC)
414*890232f2SAndroid Build Coastguard Worker  add_executable(flatc ${FlatBuffers_Compiler_SRCS})
415*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_ENABLE_PCH)
416*890232f2SAndroid Build Coastguard Worker    add_pch_to_target(flatc include/flatbuffers/pch/flatc_pch.h)
417*890232f2SAndroid Build Coastguard Worker  endif()
418*890232f2SAndroid Build Coastguard Worker  target_compile_options(flatc PRIVATE "${FLATBUFFERS_PRIVATE_CXX_FLAGS}")
419*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_CODE_SANITIZE AND NOT WIN32)
420*890232f2SAndroid Build Coastguard Worker    add_fsanitize_to_target(flatc ${FLATBUFFERS_CODE_SANITIZE})
421*890232f2SAndroid Build Coastguard Worker  endif()
422*890232f2SAndroid Build Coastguard Worker  if(NOT FLATBUFFERS_FLATC_EXECUTABLE)
423*890232f2SAndroid Build Coastguard Worker    set(FLATBUFFERS_FLATC_EXECUTABLE $<TARGET_FILE:flatc>)
424*890232f2SAndroid Build Coastguard Worker  endif()
425*890232f2SAndroid Build Coastguard Worker  if(MSVC)
426*890232f2SAndroid Build Coastguard Worker    # Make flatc.exe not depend on runtime dlls for easy distribution.
427*890232f2SAndroid Build Coastguard Worker    target_compile_options(flatc PUBLIC $<$<CONFIG:Release>:/MT>)
428*890232f2SAndroid Build Coastguard Worker  endif()
429*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_STATIC_FLATC AND NOT MSVC)
430*890232f2SAndroid Build Coastguard Worker    target_link_libraries(flatc PRIVATE -static)
431*890232f2SAndroid Build Coastguard Worker  endif()
432*890232f2SAndroid Build Coastguard Workerendif()
433*890232f2SAndroid Build Coastguard Worker
434*890232f2SAndroid Build Coastguard Workerif(FLATBUFFERS_BUILD_FLATHASH)
435*890232f2SAndroid Build Coastguard Worker  add_executable(flathash ${FlatHash_SRCS})
436*890232f2SAndroid Build Coastguard Workerendif()
437*890232f2SAndroid Build Coastguard Worker
438*890232f2SAndroid Build Coastguard Workerif(FLATBUFFERS_BUILD_SHAREDLIB)
439*890232f2SAndroid Build Coastguard Worker  add_library(flatbuffers_shared SHARED ${FlatBuffers_Library_SRCS})
440*890232f2SAndroid Build Coastguard Worker
441*890232f2SAndroid Build Coastguard Worker  # Shared object version: "major.minor.micro"
442*890232f2SAndroid Build Coastguard Worker  # - micro updated every release when there is no API/ABI changes
443*890232f2SAndroid Build Coastguard Worker  # - minor updated when there are additions in API/ABI
444*890232f2SAndroid Build Coastguard Worker  # - major (ABI number) updated when there are changes in ABI (or removals)
445*890232f2SAndroid Build Coastguard Worker  set(FlatBuffers_Library_SONAME_MAJOR ${VERSION_MAJOR})
446*890232f2SAndroid Build Coastguard Worker  set(FlatBuffers_Library_SONAME_FULL "${FlatBuffers_Library_SONAME_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
447*890232f2SAndroid Build Coastguard Worker  set_target_properties(flatbuffers_shared PROPERTIES OUTPUT_NAME flatbuffers
448*890232f2SAndroid Build Coastguard Worker                        SOVERSION "${FlatBuffers_Library_SONAME_MAJOR}"
449*890232f2SAndroid Build Coastguard Worker                        VERSION "${FlatBuffers_Library_SONAME_FULL}")
450*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_ENABLE_PCH)
451*890232f2SAndroid Build Coastguard Worker    add_pch_to_target(flatbuffers_shared include/flatbuffers/pch/pch.h)
452*890232f2SAndroid Build Coastguard Worker  endif()
453*890232f2SAndroid Build Coastguard Workerendif()
454*890232f2SAndroid Build Coastguard Worker
455*890232f2SAndroid Build Coastguard Worker# Global list of generated files.
456*890232f2SAndroid Build Coastguard Worker# Use the global property to be independent of PARENT_SCOPE.
457*890232f2SAndroid Build Coastguard Workerset_property(GLOBAL PROPERTY FBS_GENERATED_OUTPUTS)
458*890232f2SAndroid Build Coastguard Worker
459*890232f2SAndroid Build Coastguard Workerfunction(get_generated_output generated_files)
460*890232f2SAndroid Build Coastguard Worker  get_property(tmp GLOBAL PROPERTY FBS_GENERATED_OUTPUTS)
461*890232f2SAndroid Build Coastguard Worker  set(${generated_files} ${tmp} PARENT_SCOPE)
462*890232f2SAndroid Build Coastguard Workerendfunction(get_generated_output)
463*890232f2SAndroid Build Coastguard Worker
464*890232f2SAndroid Build Coastguard Workerfunction(register_generated_output file_name)
465*890232f2SAndroid Build Coastguard Worker  get_property(tmp GLOBAL PROPERTY FBS_GENERATED_OUTPUTS)
466*890232f2SAndroid Build Coastguard Worker  list(APPEND tmp ${file_name})
467*890232f2SAndroid Build Coastguard Worker  set_property(GLOBAL PROPERTY FBS_GENERATED_OUTPUTS ${tmp})
468*890232f2SAndroid Build Coastguard Workerendfunction(register_generated_output)
469*890232f2SAndroid Build Coastguard Worker
470*890232f2SAndroid Build Coastguard Workerfunction(compile_flatbuffers_schema_to_cpp_opt SRC_FBS OPT)
471*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_BUILD_LEGACY)
472*890232f2SAndroid Build Coastguard Worker    set(OPT ${OPT};--cpp-std c++0x)
473*890232f2SAndroid Build Coastguard Worker  else()
474*890232f2SAndroid Build Coastguard Worker    # --cpp-std is defined by flatc default settings.
475*890232f2SAndroid Build Coastguard Worker  endif()
476*890232f2SAndroid Build Coastguard Worker  message(STATUS "`${SRC_FBS}`: add generation of C++ code with '${OPT}'")
477*890232f2SAndroid Build Coastguard Worker  get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
478*890232f2SAndroid Build Coastguard Worker  string(REGEX REPLACE "\\.fbs$" "_generated.h" GEN_HEADER ${SRC_FBS})
479*890232f2SAndroid Build Coastguard Worker  add_custom_command(
480*890232f2SAndroid Build Coastguard Worker    OUTPUT ${GEN_HEADER}
481*890232f2SAndroid Build Coastguard Worker    COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}"
482*890232f2SAndroid Build Coastguard Worker            --cpp --gen-mutable --gen-object-api --reflect-names
483*890232f2SAndroid Build Coastguard Worker            --cpp-ptr-type flatbuffers::unique_ptr # Used to test with C++98 STLs
484*890232f2SAndroid Build Coastguard Worker            ${OPT}
485*890232f2SAndroid Build Coastguard Worker            -I "${CMAKE_CURRENT_SOURCE_DIR}/tests/include_test"
486*890232f2SAndroid Build Coastguard Worker            -o "${SRC_FBS_DIR}"
487*890232f2SAndroid Build Coastguard Worker            "${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
488*890232f2SAndroid Build Coastguard Worker    DEPENDS flatc
489*890232f2SAndroid Build Coastguard Worker    COMMENT "Run generation: '${GEN_HEADER}'")
490*890232f2SAndroid Build Coastguard Worker  register_generated_output(${GEN_HEADER})
491*890232f2SAndroid Build Coastguard Workerendfunction()
492*890232f2SAndroid Build Coastguard Worker
493*890232f2SAndroid Build Coastguard Workerfunction(compile_flatbuffers_schema_to_cpp SRC_FBS)
494*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_cpp_opt(${SRC_FBS} "--no-includes;--gen-compare")
495*890232f2SAndroid Build Coastguard Workerendfunction()
496*890232f2SAndroid Build Coastguard Worker
497*890232f2SAndroid Build Coastguard Workerfunction(compile_flatbuffers_schema_to_binary SRC_FBS)
498*890232f2SAndroid Build Coastguard Worker  message(STATUS "`${SRC_FBS}`: add generation of binary (.bfbs) schema")
499*890232f2SAndroid Build Coastguard Worker  get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
500*890232f2SAndroid Build Coastguard Worker  string(REGEX REPLACE "\\.fbs$" ".bfbs" GEN_BINARY_SCHEMA ${SRC_FBS})
501*890232f2SAndroid Build Coastguard Worker  # For details about flags see generate_code.py
502*890232f2SAndroid Build Coastguard Worker  add_custom_command(
503*890232f2SAndroid Build Coastguard Worker    OUTPUT ${GEN_BINARY_SCHEMA}
504*890232f2SAndroid Build Coastguard Worker    COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}"
505*890232f2SAndroid Build Coastguard Worker            -b --schema --bfbs-comments --bfbs-builtins
506*890232f2SAndroid Build Coastguard Worker            --bfbs-filenames ${SRC_FBS_DIR}
507*890232f2SAndroid Build Coastguard Worker            -I "${CMAKE_CURRENT_SOURCE_DIR}/tests/include_test"
508*890232f2SAndroid Build Coastguard Worker            -o "${SRC_FBS_DIR}"
509*890232f2SAndroid Build Coastguard Worker            "${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
510*890232f2SAndroid Build Coastguard Worker    DEPENDS flatc
511*890232f2SAndroid Build Coastguard Worker    COMMENT "Run generation: '${GEN_BINARY_SCHEMA}'")
512*890232f2SAndroid Build Coastguard Worker  register_generated_output(${GEN_BINARY_SCHEMA})
513*890232f2SAndroid Build Coastguard Workerendfunction()
514*890232f2SAndroid Build Coastguard Worker
515*890232f2SAndroid Build Coastguard Workerfunction(compile_flatbuffers_schema_to_embedded_binary SRC_FBS OPT)
516*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_BUILD_LEGACY)
517*890232f2SAndroid Build Coastguard Worker    set(OPT ${OPT};--cpp-std c++0x)
518*890232f2SAndroid Build Coastguard Worker  else()
519*890232f2SAndroid Build Coastguard Worker    # --cpp-std is defined by flatc default settings.
520*890232f2SAndroid Build Coastguard Worker  endif()
521*890232f2SAndroid Build Coastguard Worker  message(STATUS "`${SRC_FBS}`: add generation of C++ embedded binary schema code with '${OPT}'")
522*890232f2SAndroid Build Coastguard Worker  get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
523*890232f2SAndroid Build Coastguard Worker  string(REGEX REPLACE "\\.fbs$" "_bfbs_generated.h" GEN_BFBS_HEADER ${SRC_FBS})
524*890232f2SAndroid Build Coastguard Worker  # For details about flags see generate_code.py
525*890232f2SAndroid Build Coastguard Worker  add_custom_command(
526*890232f2SAndroid Build Coastguard Worker          OUTPUT ${GEN_BFBS_HEADER}
527*890232f2SAndroid Build Coastguard Worker          COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}"
528*890232f2SAndroid Build Coastguard Worker          --cpp --gen-mutable --gen-object-api --reflect-names
529*890232f2SAndroid Build Coastguard Worker          --cpp-ptr-type flatbuffers::unique_ptr # Used to test with C++98 STLs
530*890232f2SAndroid Build Coastguard Worker          ${OPT}
531*890232f2SAndroid Build Coastguard Worker          --bfbs-comments --bfbs-builtins --bfbs-gen-embed
532*890232f2SAndroid Build Coastguard Worker          --bfbs-filenames ${SRC_FBS_DIR}
533*890232f2SAndroid Build Coastguard Worker          -I "${CMAKE_CURRENT_SOURCE_DIR}/tests/include_test"
534*890232f2SAndroid Build Coastguard Worker          -o "${SRC_FBS_DIR}"
535*890232f2SAndroid Build Coastguard Worker          "${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
536*890232f2SAndroid Build Coastguard Worker          DEPENDS flatc
537*890232f2SAndroid Build Coastguard Worker          COMMENT "Run generation: '${GEN_BFBS_HEADER}'")
538*890232f2SAndroid Build Coastguard Worker  register_generated_output(${GEN_BFBS_HEADER})
539*890232f2SAndroid Build Coastguard Workerendfunction()
540*890232f2SAndroid Build Coastguard Worker
541*890232f2SAndroid Build Coastguard Worker# Look if we have python 3.5 installed so that we can run the generate code
542*890232f2SAndroid Build Coastguard Worker# python script after flatc is built.
543*890232f2SAndroid Build Coastguard Workerfind_package(PythonInterp 3.5)
544*890232f2SAndroid Build Coastguard Worker
545*890232f2SAndroid Build Coastguard Workerif(PYTHONINTERP_FOUND AND
546*890232f2SAndroid Build Coastguard Worker  # Skip doing this if the MSVC version is below VS 12.
547*890232f2SAndroid Build Coastguard Worker  # https://cmake.org/cmake/help/latest/variable/MSVC_VERSION.html
548*890232f2SAndroid Build Coastguard Worker  (NOT MSVC OR MSVC_VERSION GREATER 1800))
549*890232f2SAndroid Build Coastguard Worker  set(GENERATION_SCRIPT ${PYTHON_EXECUTABLE} scripts/generate_code.py)
550*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_BUILD_LEGACY)
551*890232f2SAndroid Build Coastguard Worker    # Need to set --cpp-std c++-0x options
552*890232f2SAndroid Build Coastguard Worker    set(GENERATION_SCRIPT ${GENERATION_SCRIPT} --cpp-0x)
553*890232f2SAndroid Build Coastguard Worker  endif()
554*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_SKIP_MONSTER_EXTRA)
555*890232f2SAndroid Build Coastguard Worker    set(GENERATION_SCRIPT ${GENERATION_SCRIPT} --skip-monster-extra)
556*890232f2SAndroid Build Coastguard Worker  endif()
557*890232f2SAndroid Build Coastguard Worker  add_custom_command(
558*890232f2SAndroid Build Coastguard Worker    TARGET flatc
559*890232f2SAndroid Build Coastguard Worker    POST_BUILD
560*890232f2SAndroid Build Coastguard Worker    COMMAND ${GENERATION_SCRIPT} --flatc "${FLATBUFFERS_FLATC_EXECUTABLE}"
561*890232f2SAndroid Build Coastguard Worker    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
562*890232f2SAndroid Build Coastguard Worker    COMMENT "Running ${GENERATION_SCRIPT}..."
563*890232f2SAndroid Build Coastguard Worker    VERBATIM)
564*890232f2SAndroid Build Coastguard Workerelse()
565*890232f2SAndroid Build Coastguard Worker  message("No Python3 interpreter found! Unable to generate files automatically.")
566*890232f2SAndroid Build Coastguard Workerendif()
567*890232f2SAndroid Build Coastguard Worker
568*890232f2SAndroid Build Coastguard Workerif(FLATBUFFERS_BUILD_TESTS)
569*890232f2SAndroid Build Coastguard Worker  file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/tests" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
570*890232f2SAndroid Build Coastguard Worker  file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/samples" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
571*890232f2SAndroid Build Coastguard Worker
572*890232f2SAndroid Build Coastguard Worker  # TODO Add (monster_test.fbs monsterdata_test.json)->monsterdata_test.mon
573*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_cpp(tests/monster_test.fbs)
574*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_binary(tests/monster_test.fbs)
575*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_cpp_opt(tests/namespace_test/namespace_test1.fbs "--no-includes;--gen-compare;--gen-name-strings")
576*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_cpp_opt(tests/namespace_test/namespace_test2.fbs "--no-includes;--gen-compare;--gen-name-strings")
577*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_cpp_opt(tests/union_vector/union_vector.fbs "--no-includes;--gen-compare;--gen-name-strings")
578*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_cpp(tests/optional_scalars.fbs)
579*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_cpp_opt(tests/native_type_test.fbs "")
580*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_cpp_opt(tests/arrays_test.fbs "--scoped-enums;--gen-compare")
581*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_binary(tests/arrays_test.fbs)
582*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_embedded_binary(tests/monster_test.fbs "--no-includes;--gen-compare")
583*890232f2SAndroid Build Coastguard Worker  if(NOT (MSVC AND (MSVC_VERSION LESS 1900)))
584*890232f2SAndroid Build Coastguard Worker    compile_flatbuffers_schema_to_cpp(tests/monster_extra.fbs) # Test floating-point NAN/INF.
585*890232f2SAndroid Build Coastguard Worker  endif()
586*890232f2SAndroid Build Coastguard Worker  include_directories(${CMAKE_CURRENT_BINARY_DIR}/tests)
587*890232f2SAndroid Build Coastguard Worker  add_executable(flattests ${FlatBuffers_Tests_SRCS})
588*890232f2SAndroid Build Coastguard Worker  add_dependencies(flattests generated_code)
589*890232f2SAndroid Build Coastguard Worker  set_property(TARGET flattests
590*890232f2SAndroid Build Coastguard Worker    PROPERTY COMPILE_DEFINITIONS FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
591*890232f2SAndroid Build Coastguard Worker    FLATBUFFERS_DEBUG_VERIFICATION_FAILURE=1)
592*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_CODE_SANITIZE)
593*890232f2SAndroid Build Coastguard Worker    add_fsanitize_to_target(flattests ${FLATBUFFERS_CODE_SANITIZE})
594*890232f2SAndroid Build Coastguard Worker  endif()
595*890232f2SAndroid Build Coastguard Worker
596*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_cpp(samples/monster.fbs)
597*890232f2SAndroid Build Coastguard Worker  compile_flatbuffers_schema_to_binary(samples/monster.fbs)
598*890232f2SAndroid Build Coastguard Worker  include_directories(${CMAKE_CURRENT_BINARY_DIR}/samples)
599*890232f2SAndroid Build Coastguard Worker  add_executable(flatsamplebinary ${FlatBuffers_Sample_Binary_SRCS})
600*890232f2SAndroid Build Coastguard Worker  add_dependencies(flatsamplebinary generated_code)
601*890232f2SAndroid Build Coastguard Worker  add_executable(flatsampletext ${FlatBuffers_Sample_Text_SRCS})
602*890232f2SAndroid Build Coastguard Worker  add_dependencies(flatsampletext generated_code)
603*890232f2SAndroid Build Coastguard Worker  add_executable(flatsamplebfbs ${FlatBuffers_Sample_BFBS_SRCS})
604*890232f2SAndroid Build Coastguard Worker  add_dependencies(flatsamplebfbs generated_code)
605*890232f2SAndroid Build Coastguard Worker
606*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_BUILD_CPP17)
607*890232f2SAndroid Build Coastguard Worker    # Don't generate header for flattests_cpp17 target.
608*890232f2SAndroid Build Coastguard Worker    # This target uses "generated_cpp17/monster_test_generated.h"
609*890232f2SAndroid Build Coastguard Worker    # produced by direct call of generate_code.py script.
610*890232f2SAndroid Build Coastguard Worker    add_executable(flattests_cpp17 ${FlatBuffers_Tests_CPP17_SRCS})
611*890232f2SAndroid Build Coastguard Worker    add_dependencies(flattests_cpp17 generated_code)
612*890232f2SAndroid Build Coastguard Worker    target_compile_features(flattests_cpp17 PRIVATE cxx_std_17)
613*890232f2SAndroid Build Coastguard Worker    target_compile_definitions(flattests_cpp17 PRIVATE
614*890232f2SAndroid Build Coastguard Worker      FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
615*890232f2SAndroid Build Coastguard Worker      FLATBUFFERS_DEBUG_VERIFICATION_FAILURE=1
616*890232f2SAndroid Build Coastguard Worker    )
617*890232f2SAndroid Build Coastguard Worker    if(FLATBUFFERS_CODE_SANITIZE)
618*890232f2SAndroid Build Coastguard Worker      add_fsanitize_to_target(flattests_cpp17 ${FLATBUFFERS_CODE_SANITIZE})
619*890232f2SAndroid Build Coastguard Worker    endif()
620*890232f2SAndroid Build Coastguard Worker  endif(FLATBUFFERS_BUILD_CPP17)
621*890232f2SAndroid Build Coastguard Workerendif()
622*890232f2SAndroid Build Coastguard Worker
623*890232f2SAndroid Build Coastguard Workerif(FLATBUFFERS_BUILD_GRPCTEST)
624*890232f2SAndroid Build Coastguard Worker  if(CMAKE_COMPILER_IS_GNUCXX)
625*890232f2SAndroid Build Coastguard Worker    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter -Wno-shadow")
626*890232f2SAndroid Build Coastguard Worker  endif()
627*890232f2SAndroid Build Coastguard Worker  if(NOT GRPC_INSTALL_PATH)
628*890232f2SAndroid Build Coastguard Worker    message(SEND_ERROR "GRPC_INSTALL_PATH variable is not defined. See grpc/README.md")
629*890232f2SAndroid Build Coastguard Worker  endif()
630*890232f2SAndroid Build Coastguard Worker  if(NOT PROTOBUF_DOWNLOAD_PATH)
631*890232f2SAndroid Build Coastguard Worker    message(SEND_ERROR "PROTOBUF_DOWNLOAD_PATH variable is not defined. See grpc/README.md")
632*890232f2SAndroid Build Coastguard Worker  endif()
633*890232f2SAndroid Build Coastguard Worker  INCLUDE_DIRECTORIES(${GRPC_INSTALL_PATH}/include)
634*890232f2SAndroid Build Coastguard Worker  INCLUDE_DIRECTORIES(${PROTOBUF_DOWNLOAD_PATH}/src)
635*890232f2SAndroid Build Coastguard Worker  find_package(Threads REQUIRED)
636*890232f2SAndroid Build Coastguard Worker  list(APPEND CMAKE_PREFIX_PATH ${GRPC_INSTALL_PATH})
637*890232f2SAndroid Build Coastguard Worker  find_package(absl CONFIG REQUIRED)
638*890232f2SAndroid Build Coastguard Worker  find_package(protobuf CONFIG REQUIRED)
639*890232f2SAndroid Build Coastguard Worker  find_package(gRPC CONFIG REQUIRED)
640*890232f2SAndroid Build Coastguard Worker  add_executable(grpctest ${FlatBuffers_GRPCTest_SRCS})
641*890232f2SAndroid Build Coastguard Worker  add_dependencies(grpctest generated_code)
642*890232f2SAndroid Build Coastguard Worker  target_link_libraries(grpctest PRIVATE gRPC::grpc++_unsecure gRPC::grpc_unsecure gRPC::gpr pthread dl)
643*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_CODE_SANITIZE AND NOT WIN32)
644*890232f2SAndroid Build Coastguard Worker    # GRPC test has problems with alignment and will fail under ASAN/UBSAN.
645*890232f2SAndroid Build Coastguard Worker    # add_fsanitize_to_target(grpctest ${FLATBUFFERS_CODE_SANITIZE})
646*890232f2SAndroid Build Coastguard Worker  endif()
647*890232f2SAndroid Build Coastguard Workerendif()
648*890232f2SAndroid Build Coastguard Worker
649*890232f2SAndroid Build Coastguard Worker
650*890232f2SAndroid Build Coastguard Workerif(FLATBUFFERS_INSTALL)
651*890232f2SAndroid Build Coastguard Worker  include(GNUInstallDirs)
652*890232f2SAndroid Build Coastguard Worker
653*890232f2SAndroid Build Coastguard Worker  install(DIRECTORY include/flatbuffers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
654*890232f2SAndroid Build Coastguard Worker
655*890232f2SAndroid Build Coastguard Worker  set(FB_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/flatbuffers")
656*890232f2SAndroid Build Coastguard Worker
657*890232f2SAndroid Build Coastguard Worker  configure_file(CMake/FlatBuffersConfigVersion.cmake.in FlatBuffersConfigVersion.cmake @ONLY)
658*890232f2SAndroid Build Coastguard Worker  install(
659*890232f2SAndroid Build Coastguard Worker      FILES "CMake/FlatBuffersConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/FlatBuffersConfigVersion.cmake"
660*890232f2SAndroid Build Coastguard Worker      DESTINATION ${FB_CMAKE_DIR}
661*890232f2SAndroid Build Coastguard Worker  )
662*890232f2SAndroid Build Coastguard Worker
663*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_BUILD_FLATLIB)
664*890232f2SAndroid Build Coastguard Worker    if(CMAKE_VERSION VERSION_LESS 3.0)
665*890232f2SAndroid Build Coastguard Worker      install(
666*890232f2SAndroid Build Coastguard Worker        TARGETS flatbuffers EXPORT FlatBuffersTargets
667*890232f2SAndroid Build Coastguard Worker        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
668*890232f2SAndroid Build Coastguard Worker      )
669*890232f2SAndroid Build Coastguard Worker    else()
670*890232f2SAndroid Build Coastguard Worker      install(
671*890232f2SAndroid Build Coastguard Worker        TARGETS flatbuffers EXPORT FlatBuffersTargets
672*890232f2SAndroid Build Coastguard Worker        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
673*890232f2SAndroid Build Coastguard Worker        INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
674*890232f2SAndroid Build Coastguard Worker      )
675*890232f2SAndroid Build Coastguard Worker    endif()
676*890232f2SAndroid Build Coastguard Worker
677*890232f2SAndroid Build Coastguard Worker    install(EXPORT FlatBuffersTargets
678*890232f2SAndroid Build Coastguard Worker      FILE FlatBuffersTargets.cmake
679*890232f2SAndroid Build Coastguard Worker      NAMESPACE flatbuffers::
680*890232f2SAndroid Build Coastguard Worker      DESTINATION ${FB_CMAKE_DIR}
681*890232f2SAndroid Build Coastguard Worker    )
682*890232f2SAndroid Build Coastguard Worker  endif()
683*890232f2SAndroid Build Coastguard Worker
684*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_BUILD_FLATC)
685*890232f2SAndroid Build Coastguard Worker    install(
686*890232f2SAndroid Build Coastguard Worker      TARGETS flatc EXPORT FlatcTargets
687*890232f2SAndroid Build Coastguard Worker      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
688*890232f2SAndroid Build Coastguard Worker    )
689*890232f2SAndroid Build Coastguard Worker
690*890232f2SAndroid Build Coastguard Worker    install(
691*890232f2SAndroid Build Coastguard Worker      EXPORT FlatcTargets
692*890232f2SAndroid Build Coastguard Worker      FILE FlatcTargets.cmake
693*890232f2SAndroid Build Coastguard Worker      NAMESPACE flatbuffers::
694*890232f2SAndroid Build Coastguard Worker      DESTINATION ${FB_CMAKE_DIR}
695*890232f2SAndroid Build Coastguard Worker    )
696*890232f2SAndroid Build Coastguard Worker  endif()
697*890232f2SAndroid Build Coastguard Worker
698*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_BUILD_SHAREDLIB)
699*890232f2SAndroid Build Coastguard Worker    if(CMAKE_VERSION VERSION_LESS 3.0)
700*890232f2SAndroid Build Coastguard Worker      install(
701*890232f2SAndroid Build Coastguard Worker        TARGETS flatbuffers_shared EXPORT FlatBuffersSharedTargets
702*890232f2SAndroid Build Coastguard Worker        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
703*890232f2SAndroid Build Coastguard Worker        RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
704*890232f2SAndroid Build Coastguard Worker        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
705*890232f2SAndroid Build Coastguard Worker      )
706*890232f2SAndroid Build Coastguard Worker    else()
707*890232f2SAndroid Build Coastguard Worker      install(
708*890232f2SAndroid Build Coastguard Worker        TARGETS flatbuffers_shared EXPORT FlatBuffersSharedTargets
709*890232f2SAndroid Build Coastguard Worker        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
710*890232f2SAndroid Build Coastguard Worker        RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
711*890232f2SAndroid Build Coastguard Worker        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
712*890232f2SAndroid Build Coastguard Worker        INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
713*890232f2SAndroid Build Coastguard Worker      )
714*890232f2SAndroid Build Coastguard Worker    endif()
715*890232f2SAndroid Build Coastguard Worker
716*890232f2SAndroid Build Coastguard Worker  install(
717*890232f2SAndroid Build Coastguard Worker      EXPORT FlatBuffersSharedTargets
718*890232f2SAndroid Build Coastguard Worker      FILE FlatBuffersSharedTargets.cmake
719*890232f2SAndroid Build Coastguard Worker      NAMESPACE flatbuffers::
720*890232f2SAndroid Build Coastguard Worker      DESTINATION ${FB_CMAKE_DIR}
721*890232f2SAndroid Build Coastguard Worker    )
722*890232f2SAndroid Build Coastguard Worker  endif()
723*890232f2SAndroid Build Coastguard Worker
724*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_BUILD_SHAREDLIB OR FLATBUFFERS_BUILD_FLATLIB)
725*890232f2SAndroid Build Coastguard Worker      configure_file(CMake/flatbuffers.pc.in flatbuffers.pc @ONLY)
726*890232f2SAndroid Build Coastguard Worker      install(
727*890232f2SAndroid Build Coastguard Worker        FILES "${CMAKE_CURRENT_BINARY_DIR}/flatbuffers.pc"
728*890232f2SAndroid Build Coastguard Worker        DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
729*890232f2SAndroid Build Coastguard Worker      )
730*890232f2SAndroid Build Coastguard Worker  endif()
731*890232f2SAndroid Build Coastguard Workerendif()
732*890232f2SAndroid Build Coastguard Worker
733*890232f2SAndroid Build Coastguard Workerif(FLATBUFFERS_BUILD_TESTS)
734*890232f2SAndroid Build Coastguard Worker  enable_testing()
735*890232f2SAndroid Build Coastguard Worker
736*890232f2SAndroid Build Coastguard Worker  add_test(NAME flattests COMMAND flattests)
737*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_BUILD_CPP17)
738*890232f2SAndroid Build Coastguard Worker    add_test(NAME flattests_cpp17 COMMAND flattests_cpp17)
739*890232f2SAndroid Build Coastguard Worker  endif()
740*890232f2SAndroid Build Coastguard Worker  if(FLATBUFFERS_BUILD_GRPCTEST)
741*890232f2SAndroid Build Coastguard Worker    add_test(NAME grpctest COMMAND grpctest)
742*890232f2SAndroid Build Coastguard Worker  endif()
743*890232f2SAndroid Build Coastguard Workerendif()
744*890232f2SAndroid Build Coastguard Worker
745*890232f2SAndroid Build Coastguard Worker# This target is sync-barrier.
746*890232f2SAndroid Build Coastguard Worker# Other generate-dependent targets can depend on 'generated_code' only.
747*890232f2SAndroid Build Coastguard Workerget_generated_output(fbs_generated)
748*890232f2SAndroid Build Coastguard Workerif(fbs_generated)
749*890232f2SAndroid Build Coastguard Worker  # message(STATUS "Add generated_code target with files:${fbs_generated}")
750*890232f2SAndroid Build Coastguard Worker  add_custom_target(generated_code
751*890232f2SAndroid Build Coastguard Worker    DEPENDS ${fbs_generated}
752*890232f2SAndroid Build Coastguard Worker    COMMENT "All generated files were updated.")
753*890232f2SAndroid Build Coastguard Workerendif()
754*890232f2SAndroid Build Coastguard Worker
755*890232f2SAndroid Build Coastguard Workerinclude(CMake/BuildFlatBuffers.cmake)
756*890232f2SAndroid Build Coastguard Worker
757*890232f2SAndroid Build Coastguard Workerif(UNIX)
758*890232f2SAndroid Build Coastguard Worker    # Use of CPack only supported on Linux systems.
759*890232f2SAndroid Build Coastguard Worker    if(FLATBUFFERS_PACKAGE_DEBIAN)
760*890232f2SAndroid Build Coastguard Worker        include(CMake/PackageDebian.cmake)
761*890232f2SAndroid Build Coastguard Worker        include(CPack)
762*890232f2SAndroid Build Coastguard Worker    endif()
763*890232f2SAndroid Build Coastguard Worker    if (FLATBUFFERS_PACKAGE_REDHAT)
764*890232f2SAndroid Build Coastguard Worker        include(CMake/PackageRedhat.cmake)
765*890232f2SAndroid Build Coastguard Worker        include(CPack)
766*890232f2SAndroid Build Coastguard Worker    endif()
767*890232f2SAndroid Build Coastguard Workerendif()
768*890232f2SAndroid Build Coastguard Worker
769*890232f2SAndroid Build Coastguard Worker# Include for running Google Benchmarks.
770*890232f2SAndroid Build Coastguard Workerif(FLATBUFFERS_BUILD_BENCHMARKS AND CMAKE_VERSION VERSION_GREATER 3.13)
771*890232f2SAndroid Build Coastguard Worker  add_subdirectory(benchmarks)
772*890232f2SAndroid Build Coastguard Workerendif()
773*890232f2SAndroid Build Coastguard Worker
774*890232f2SAndroid Build Coastguard Worker# Add FlatBuffers::FlatBuffers interface, needed for FetchContent_Declare
775*890232f2SAndroid Build Coastguard Workeradd_library(FlatBuffers INTERFACE)
776*890232f2SAndroid Build Coastguard Workeradd_library(FlatBuffers::FlatBuffers ALIAS FlatBuffers)
777*890232f2SAndroid Build Coastguard Workertarget_include_directories(
778*890232f2SAndroid Build Coastguard Worker  FlatBuffers
779*890232f2SAndroid Build Coastguard Worker  INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
780*890232f2SAndroid Build Coastguard Worker            $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/include>)
781