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