2014-01-28 00:52:49 +00:00
|
|
|
cmake_minimum_required(VERSION 2.8)
|
|
|
|
|
|
|
|
project(FlatBuffers)
|
|
|
|
|
|
|
|
# NOTE: Code coverage only works on Linux & OSX.
|
|
|
|
option(FLATBUFFERS_CODE_COVERAGE "Enable the code coverage build option." OFF)
|
2014-09-10 23:01:13 +00:00
|
|
|
option(FLATBUFFERS_BUILD_TESTS "Enable the build of tests and samples." ON)
|
2014-09-15 16:50:23 +00:00
|
|
|
option(FLATBUFFERS_INSTALL "Enable the installation of targets." ON)
|
2016-07-02 01:08:51 +00:00
|
|
|
option(FLATBUFFERS_BUILD_FLATLIB "Enable the build of the flatbuffers library"
|
|
|
|
ON)
|
|
|
|
option(FLATBUFFERS_BUILD_FLATC "Enable the build of the flatbuffers compiler"
|
|
|
|
ON)
|
2015-02-13 23:58:29 +00:00
|
|
|
option(FLATBUFFERS_BUILD_FLATHASH "Enable the build of flathash" ON)
|
2016-04-14 01:16:05 +00:00
|
|
|
option(FLATBUFFERS_BUILD_GRPCTEST "Enable the build of grpctest" OFF)
|
2016-09-06 17:12:04 +00:00
|
|
|
option(FLATBUFFERS_BUILD_SHAREDLIB
|
|
|
|
"Enable the build of the flatbuffers shared library"
|
|
|
|
OFF)
|
2015-01-02 12:51:31 +00:00
|
|
|
|
|
|
|
if(NOT FLATBUFFERS_BUILD_FLATC AND FLATBUFFERS_BUILD_TESTS)
|
|
|
|
message(WARNING
|
|
|
|
"Cannot build tests without building the compiler. Tests will be disabled.")
|
|
|
|
set(FLATBUFFERS_BUILD_TESTS OFF)
|
|
|
|
endif()
|
2014-01-28 00:52:49 +00:00
|
|
|
|
2015-07-22 12:18:59 +00:00
|
|
|
set(FlatBuffers_Library_SRCS
|
2016-04-13 21:21:18 +00:00
|
|
|
include/flatbuffers/code_generators.h
|
2017-06-16 03:54:04 +00:00
|
|
|
include/flatbuffers/base.h
|
2014-01-28 00:52:49 +00:00
|
|
|
include/flatbuffers/flatbuffers.h
|
2015-02-13 23:58:29 +00:00
|
|
|
include/flatbuffers/hash.h
|
2014-01-28 00:52:49 +00:00
|
|
|
include/flatbuffers/idl.h
|
|
|
|
include/flatbuffers/util.h
|
2015-05-21 23:33:29 +00:00
|
|
|
include/flatbuffers/reflection.h
|
|
|
|
include/flatbuffers/reflection_generated.h
|
2017-07-13 13:27:39 +00:00
|
|
|
include/flatbuffers/stl_emulation.h
|
2016-02-02 02:00:30 +00:00
|
|
|
include/flatbuffers/flexbuffers.h
|
2017-06-16 03:54:04 +00:00
|
|
|
include/flatbuffers/registry.h
|
2017-08-25 00:44:03 +00:00
|
|
|
include/flatbuffers/minireflect.h
|
Add CodeWriter utility class.
Helps simplify code generation code. Instead of this:
code += "inline const " + cpp_qualified_name + " *Get";
code += name;
code += "(const void *buf) {\n return flatbuffers::GetRoot<";
code += cpp_qualified_name + ">(buf);\n}\n\n";
You do this:
code.SetValue("NAME", struct_def.name);
code.SetValue("CPP_NAME", cpp_qualified_name);
code += "inline const {{CPP_NAME}} *Get{{NAME}}(const void *buf) {";
code += " return flatbuffers::GetRoot<{{CPP_NAME}}>(buf);";
code += "}";
code += "";
Updated the CPP code generator to use the CodeWriter class. Most of the
changes in the generated code are white-space changes, esp. around new
lines (since the code generator class automatically appends new lines
when appending a string). Actual code changes include:
* Renamed "rehasher" to "_rehasher" for consistency with other args in
Pack function.
* Renamed "union_obj" to "obj: in UnPack function.
* Always do "(void)_o;" to prevent unused variable warning in Create
function (instead of only doing it if there are no fields) in order
to avoid two-passes.
* Renamed padding variables from __paddingX to paddingX__.
"Each name that contains a double underscore (_ _) [...] is reserved
to the implementation for any use." C++ standards 17.4.3.1.2.
* Add braces around switch cases.
* Calculate index as a separate statement in EnumName function, eg.
const size_t index = ...;
return EnumNamesX()[index];
vs.
return EnumNamesX()[...];
* Stored end table offset in variable in Finish() functions, eg.
const auto end = fbb_.EndTable(start_, ...);
auto o = flatbuffers::Offset<T>(end);
vs.
auto o = flatbuffers::Offset<T>(fbb_.EndTable(start, ...));
* Separate reinterpret_cast calls from function calls in Union
functions, eg.
auto ptr = reinterpret_cast<const T *>(obj);
return ptr->UnPack(resolver);
vs.
return reinterpret_cast<const T *>(obj)->UnPack(resolver);
* Removed unecessary (void)(padding__X) no-ops from constructors, eg.
Test(int16_t a, int8_t b) : ... {
(void)__padding0; // <-- Removed this line.
}
In the idl_gen_cpp.cpp file itself, I refactored some code generation into
new functions: GenParam, GenNativeTable, GenVerifyCall, GenBuilders,
GenUnpackFieldStatement, and GenCreateParam.
Change-Id: I727b1bd8719d05b7ce33cbce00eb58fda817b25d
2017-01-14 01:44:42 +00:00
|
|
|
src/code_generators.cpp
|
2014-01-28 00:52:49 +00:00
|
|
|
src/idl_parser.cpp
|
2015-07-22 12:18:59 +00:00
|
|
|
src/idl_gen_text.cpp
|
2015-07-31 20:55:53 +00:00
|
|
|
src/reflection.cpp
|
2016-03-31 00:34:52 +00:00
|
|
|
src/util.cpp
|
2015-07-22 12:18:59 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
set(FlatBuffers_Compiler_SRCS
|
|
|
|
${FlatBuffers_Library_SRCS}
|
2014-01-28 00:52:49 +00:00
|
|
|
src/idl_gen_cpp.cpp
|
2014-09-17 00:37:17 +00:00
|
|
|
src/idl_gen_general.cpp
|
2014-07-11 23:12:35 +00:00
|
|
|
src/idl_gen_go.cpp
|
2015-08-17 07:56:54 +00:00
|
|
|
src/idl_gen_js.cpp
|
(PHP) add experimental support for PHP language.
* codegen for all basic features: WIP (probably implemented all basic feature)
* JSON parsing: NO
* Simple mutation: NO
* Reflection: NO
* Buffer verifier: NO (will be add later)
* Testing: basic: Yes
* Testing: fuzz: Yes
* Performance: Not bad
* Platform: Supported Linux, OS X, Windows (has 32bit integer limitation)
* Engine Unity: No
flatc --php monster_test.fbs
<?php
//include neccessary files.
$fbb = new Google\FlatBuffers\FlatBufferBuilder(1);
$str = $fbb->createString("monster");
\MyGame\Example\Monster::startMonster($fbb);
\MyGame\Example\Monster::addHp($fbb, 80);
\MyGame\Example\Monster::addName($fbb, $str);
$mon = \MyGame\Example\Monster::endMonster($fbb);
$fbb->finish($mon);
echo $fbb->sizedByteArray();
PHP 5.4 higher
Currently, we do not register this library to packagist as still experimental and versioning problem.
If you intended to use flatbuffers with composer. add repostiories section to composer.json like below.
"repositories": [{
"type": "vcs",
"url": "https://github.com/google/flatbuffers"
}],
and just put google/flatbuffers.
"require": {
"google/flatbuffers": "*"
}
* PHP's integer is platform dependant. we strongly recommend use 64bit machine
and don't use uint, ulong types as prevent overflow issue.
ref: http://php.net/manual/en/language.types.integer.php
* php don't support float type. floating point numbers are always parsed as double precision internally.
ref: http://php.net/manual/en/language.types.float.php
* ByteBuffer is little bit slow implemnentation due to many chr/ord function calls. Especially encoding objects.
This is expected performance as PHP5 has parsing arguments overhead. probably we'll add C-extension.
Basically, PHP implementation respects Java and C# implementation.
Note: ByteBuffer and FlatBuffersBuilder class are not intended to use other purposes.
we may change internal API foreseeable future.
PSR-2, PSR-4 standards.
Implemented simple assertion class (respect JavaScript testcase implementation) as we prefer small code base.
this also keeps CI iteration speed.
we'll choose phpunit or something when the test cases grown.
2015-11-05 07:19:28 +00:00
|
|
|
src/idl_gen_php.cpp
|
2014-12-16 08:32:11 +00:00
|
|
|
src/idl_gen_python.cpp
|
2014-09-26 23:46:30 +00:00
|
|
|
src/idl_gen_fbs.cpp
|
2016-04-14 01:16:05 +00:00
|
|
|
src/idl_gen_grpc.cpp
|
2017-07-10 15:05:59 +00:00
|
|
|
src/idl_gen_json_schema.cpp
|
2014-01-28 00:52:49 +00:00
|
|
|
src/flatc.cpp
|
2017-01-25 21:41:34 +00:00
|
|
|
src/flatc_main.cpp
|
2016-08-19 05:11:11 +00:00
|
|
|
grpc/src/compiler/schema_interface.h
|
2016-04-14 01:16:05 +00:00
|
|
|
grpc/src/compiler/cpp_generator.h
|
|
|
|
grpc/src/compiler/cpp_generator.cc
|
2016-12-05 21:20:38 +00:00
|
|
|
grpc/src/compiler/go_generator.h
|
|
|
|
grpc/src/compiler/go_generator.cc
|
2014-01-28 00:52:49 +00:00
|
|
|
)
|
|
|
|
|
2015-02-13 23:58:29 +00:00
|
|
|
set(FlatHash_SRCS
|
|
|
|
include/flatbuffers/hash.h
|
|
|
|
src/flathash.cpp
|
|
|
|
)
|
|
|
|
|
2014-01-28 00:52:49 +00:00
|
|
|
set(FlatBuffers_Tests_SRCS
|
2015-07-31 20:55:53 +00:00
|
|
|
${FlatBuffers_Library_SRCS}
|
2014-09-26 23:46:30 +00:00
|
|
|
src/idl_gen_fbs.cpp
|
2014-01-28 00:52:49 +00:00
|
|
|
tests/test.cpp
|
|
|
|
# file generate by running compiler on tests/monster_test.fbs
|
2014-09-15 16:50:23 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_generated.h
|
2014-01-28 00:52:49 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
set(FlatBuffers_Sample_Binary_SRCS
|
|
|
|
include/flatbuffers/flatbuffers.h
|
|
|
|
samples/sample_binary.cpp
|
2014-09-15 16:50:23 +00:00
|
|
|
# file generated by running compiler on samples/monster.fbs
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
|
2014-01-28 00:52:49 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
set(FlatBuffers_Sample_Text_SRCS
|
Add CodeWriter utility class.
Helps simplify code generation code. Instead of this:
code += "inline const " + cpp_qualified_name + " *Get";
code += name;
code += "(const void *buf) {\n return flatbuffers::GetRoot<";
code += cpp_qualified_name + ">(buf);\n}\n\n";
You do this:
code.SetValue("NAME", struct_def.name);
code.SetValue("CPP_NAME", cpp_qualified_name);
code += "inline const {{CPP_NAME}} *Get{{NAME}}(const void *buf) {";
code += " return flatbuffers::GetRoot<{{CPP_NAME}}>(buf);";
code += "}";
code += "";
Updated the CPP code generator to use the CodeWriter class. Most of the
changes in the generated code are white-space changes, esp. around new
lines (since the code generator class automatically appends new lines
when appending a string). Actual code changes include:
* Renamed "rehasher" to "_rehasher" for consistency with other args in
Pack function.
* Renamed "union_obj" to "obj: in UnPack function.
* Always do "(void)_o;" to prevent unused variable warning in Create
function (instead of only doing it if there are no fields) in order
to avoid two-passes.
* Renamed padding variables from __paddingX to paddingX__.
"Each name that contains a double underscore (_ _) [...] is reserved
to the implementation for any use." C++ standards 17.4.3.1.2.
* Add braces around switch cases.
* Calculate index as a separate statement in EnumName function, eg.
const size_t index = ...;
return EnumNamesX()[index];
vs.
return EnumNamesX()[...];
* Stored end table offset in variable in Finish() functions, eg.
const auto end = fbb_.EndTable(start_, ...);
auto o = flatbuffers::Offset<T>(end);
vs.
auto o = flatbuffers::Offset<T>(fbb_.EndTable(start, ...));
* Separate reinterpret_cast calls from function calls in Union
functions, eg.
auto ptr = reinterpret_cast<const T *>(obj);
return ptr->UnPack(resolver);
vs.
return reinterpret_cast<const T *>(obj)->UnPack(resolver);
* Removed unecessary (void)(padding__X) no-ops from constructors, eg.
Test(int16_t a, int8_t b) : ... {
(void)__padding0; // <-- Removed this line.
}
In the idl_gen_cpp.cpp file itself, I refactored some code generation into
new functions: GenParam, GenNativeTable, GenVerifyCall, GenBuilders,
GenUnpackFieldStatement, and GenCreateParam.
Change-Id: I727b1bd8719d05b7ce33cbce00eb58fda817b25d
2017-01-14 01:44:42 +00:00
|
|
|
${FlatBuffers_Library_SRCS}
|
2014-01-28 00:52:49 +00:00
|
|
|
samples/sample_text.cpp
|
2014-09-15 16:50:23 +00:00
|
|
|
# file generated by running compiler on samples/monster.fbs
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
|
2014-01-28 00:52:49 +00:00
|
|
|
)
|
|
|
|
|
2016-04-14 01:16:05 +00:00
|
|
|
set(FlatBuffers_GRPCTest_SRCS
|
|
|
|
include/flatbuffers/flatbuffers.h
|
|
|
|
include/flatbuffers/grpc.h
|
|
|
|
tests/monster_test.grpc.fb.h
|
|
|
|
tests/monster_test.grpc.fb.cc
|
|
|
|
grpc/tests/grpctest.cpp
|
|
|
|
# file generated by running compiler on samples/monster.fbs
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
|
|
|
|
)
|
|
|
|
|
2014-01-28 00:52:49 +00:00
|
|
|
# source_group(Compiler FILES ${FlatBuffers_Compiler_SRCS})
|
|
|
|
# source_group(Tests FILES ${FlatBuffers_Tests_SRCS})
|
|
|
|
|
2016-10-05 20:20:30 +00:00
|
|
|
if(EXISTS "${CMAKE_TOOLCHAIN_FILE}")
|
2016-10-17 20:06:11 +00:00
|
|
|
# do not apply any global settings if the toolchain
|
2016-10-05 20:20:30 +00:00
|
|
|
# is being configured externally
|
|
|
|
elseif(APPLE)
|
2016-07-23 02:04:23 +00:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++")
|
2017-05-12 16:48:17 +00:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Werror -Wextra -Wno-unused-parameter")
|
2015-05-27 23:57:21 +00:00
|
|
|
elseif(CMAKE_COMPILER_IS_GNUCXX)
|
2016-04-02 04:42:23 +00:00
|
|
|
if(CYGWIN)
|
|
|
|
set(CMAKE_CXX_FLAGS
|
|
|
|
"${CMAKE_CXX_FLAGS} -std=gnu++11")
|
|
|
|
else(CYGWIN)
|
|
|
|
set(CMAKE_CXX_FLAGS
|
|
|
|
"${CMAKE_CXX_FLAGS} -std=c++0x")
|
|
|
|
endif(CYGWIN)
|
2014-08-25 17:42:38 +00:00
|
|
|
set(CMAKE_CXX_FLAGS
|
2016-04-02 04:42:23 +00:00
|
|
|
"${CMAKE_CXX_FLAGS} -Wall -pedantic -Werror -Wextra -Werror=shadow")
|
2016-02-11 00:03:53 +00:00
|
|
|
if (GCC_VERSION VERSION_GREATER 4.4)
|
|
|
|
set(CMAKE_CXX_FLAGS
|
2016-10-17 20:06:11 +00:00
|
|
|
"${CMAKE_CXX_FLAGS} -Wunused-result -Werror=unused-result \
|
|
|
|
-Wunused-parameter -Werror=unused-parameter")
|
2016-02-11 00:03:53 +00:00
|
|
|
endif()
|
2016-02-29 17:28:40 +00:00
|
|
|
|
|
|
|
# Certain platforms such as ARM do not use signed chars by default
|
|
|
|
# which causes issues with certain bounds checks.
|
|
|
|
set(CMAKE_CXX_FLAGS
|
|
|
|
"${CMAKE_CXX_FLAGS} -fsigned-char")
|
|
|
|
|
2016-09-08 17:47:50 +00:00
|
|
|
elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
|
2015-05-27 23:57:21 +00:00
|
|
|
set(CMAKE_CXX_FLAGS
|
2017-02-26 05:47:57 +00:00
|
|
|
"${CMAKE_CXX_FLAGS} -std=c++0x -Wall -pedantic -Werror \
|
2017-05-12 16:48:17 +00:00
|
|
|
-Wextra -Wno-unused-parameter")
|
2017-02-26 05:47:57 +00:00
|
|
|
if(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
|
|
|
|
set(CMAKE_CXX_FLAGS
|
|
|
|
"${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
|
|
|
endif()
|
|
|
|
if(NOT ("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD" OR
|
|
|
|
"${CMAKE_SYSTEM_NAME}" MATCHES "Linux"))
|
2016-03-03 01:15:42 +00:00
|
|
|
set(CMAKE_EXE_LINKER_FLAGS
|
|
|
|
"${CMAKE_EXE_LINKER_FLAGS} -lc++abi")
|
|
|
|
endif()
|
2016-02-29 17:28:40 +00:00
|
|
|
|
|
|
|
# Certain platforms such as ARM do not use signed chars by default
|
|
|
|
# which causes issues with certain bounds checks.
|
|
|
|
set(CMAKE_CXX_FLAGS
|
|
|
|
"${CMAKE_CXX_FLAGS} -fsigned-char")
|
|
|
|
|
2017-02-16 01:44:55 +00:00
|
|
|
elseif(MSVC)
|
2017-03-10 18:27:30 +00:00
|
|
|
# Visual Studio pedantic build settings
|
2017-03-29 19:01:11 +00:00
|
|
|
# warning C4512: assignment operator could not be generated
|
2017-04-24 17:29:25 +00:00
|
|
|
# warning C4316: object allocated on the heap may not be aligned
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /WX /wd4512 /wd4316")
|
2014-01-28 00:52:49 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
if(FLATBUFFERS_CODE_COVERAGE)
|
2014-07-26 11:12:56 +00:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fprofile-arcs -ftest-coverage")
|
2014-07-29 17:29:38 +00:00
|
|
|
set(CMAKE_EXE_LINKER_FLAGS
|
|
|
|
"${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
|
2014-01-28 00:52:49 +00:00
|
|
|
endif()
|
|
|
|
|
2015-01-31 16:14:59 +00:00
|
|
|
if(BIICODE)
|
2015-04-01 10:35:37 +00:00
|
|
|
include(biicode/cmake/biicode.cmake)
|
2015-01-31 16:14:59 +00:00
|
|
|
return()
|
2015-04-01 10:35:37 +00:00
|
|
|
endif()
|
2015-01-31 16:14:59 +00:00
|
|
|
|
2014-01-28 00:52:49 +00:00
|
|
|
include_directories(include)
|
2016-04-14 01:16:05 +00:00
|
|
|
include_directories(grpc)
|
2014-01-28 00:52:49 +00:00
|
|
|
|
2015-07-22 12:18:59 +00:00
|
|
|
if(FLATBUFFERS_BUILD_FLATLIB)
|
|
|
|
add_library(flatbuffers STATIC ${FlatBuffers_Library_SRCS})
|
|
|
|
endif()
|
|
|
|
|
2015-01-02 12:51:31 +00:00
|
|
|
if(FLATBUFFERS_BUILD_FLATC)
|
2015-02-13 23:58:29 +00:00
|
|
|
add_executable(flatc ${FlatBuffers_Compiler_SRCS})
|
2016-05-01 03:15:53 +00:00
|
|
|
if(NOT FLATBUFFERS_FLATC_EXECUTABLE)
|
|
|
|
set(FLATBUFFERS_FLATC_EXECUTABLE $<TARGET_FILE:flatc>)
|
|
|
|
endif()
|
2017-05-10 22:42:23 +00:00
|
|
|
if(MSVC)
|
|
|
|
# Make flatc.exe not depend on runtime dlls for easy distribution.
|
|
|
|
target_compile_options(flatc PUBLIC $<$<CONFIG:Release>:/MT>)
|
|
|
|
endif()
|
2015-02-13 23:58:29 +00:00
|
|
|
endif()
|
|
|
|
|
2015-04-28 22:44:10 +00:00
|
|
|
if(FLATBUFFERS_BUILD_FLATHASH)
|
2015-02-13 23:58:29 +00:00
|
|
|
add_executable(flathash ${FlatHash_SRCS})
|
2015-01-02 12:51:31 +00:00
|
|
|
endif()
|
2014-09-15 16:50:23 +00:00
|
|
|
|
2016-09-06 17:12:04 +00:00
|
|
|
if(FLATBUFFERS_BUILD_SHAREDLIB)
|
|
|
|
add_library(flatbuffers_shared SHARED ${FlatBuffers_Library_SRCS})
|
|
|
|
set_target_properties(flatbuffers_shared PROPERTIES OUTPUT_NAME flatbuffers)
|
|
|
|
endif()
|
|
|
|
|
2014-09-15 16:50:23 +00:00
|
|
|
function(compile_flatbuffers_schema_to_cpp SRC_FBS)
|
2014-10-24 21:26:29 +00:00
|
|
|
get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
|
2014-09-23 18:55:42 +00:00
|
|
|
string(REGEX REPLACE "\\.fbs$" "_generated.h" GEN_HEADER ${SRC_FBS})
|
2014-09-15 16:50:23 +00:00
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${GEN_HEADER}
|
2016-07-02 01:08:51 +00:00
|
|
|
COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}" -c --no-includes --gen-mutable
|
|
|
|
--gen-object-api -o "${SRC_FBS_DIR}"
|
2017-07-13 13:27:39 +00:00
|
|
|
--cpp-ptr-type flatbuffers::unique_ptr # Used to test with C++98 STLs
|
2017-08-25 00:44:03 +00:00
|
|
|
--reflect-names
|
2017-05-24 22:21:26 +00:00
|
|
|
-I "${CMAKE_CURRENT_SOURCE_DIR}/tests/include_test"
|
2016-07-02 01:08:51 +00:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
|
2014-09-15 16:50:23 +00:00
|
|
|
DEPENDS flatc)
|
|
|
|
endfunction()
|
|
|
|
|
2015-05-21 23:33:29 +00:00
|
|
|
function(compile_flatbuffers_schema_to_binary SRC_FBS)
|
|
|
|
get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
|
|
|
|
string(REGEX REPLACE "\\.fbs$" ".bfbs" GEN_BINARY_SCHEMA ${SRC_FBS})
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${GEN_BINARY_SCHEMA}
|
2016-07-02 01:08:51 +00:00
|
|
|
COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}" -b --schema -o "${SRC_FBS_DIR}"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
|
2015-05-21 23:33:29 +00:00
|
|
|
DEPENDS flatc)
|
|
|
|
endfunction()
|
|
|
|
|
2014-09-10 23:01:13 +00:00
|
|
|
if(FLATBUFFERS_BUILD_TESTS)
|
2014-09-15 16:50:23 +00:00
|
|
|
compile_flatbuffers_schema_to_cpp(tests/monster_test.fbs)
|
|
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}/tests)
|
2014-09-10 23:01:13 +00:00
|
|
|
add_executable(flattests ${FlatBuffers_Tests_SRCS})
|
2016-12-16 16:46:30 +00:00
|
|
|
set_property(TARGET flattests
|
|
|
|
PROPERTY COMPILE_DEFINITIONS FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE
|
|
|
|
FLATBUFFERS_DEBUG_VERIFICATION_FAILURE=1)
|
2014-09-15 16:50:23 +00:00
|
|
|
|
|
|
|
compile_flatbuffers_schema_to_cpp(samples/monster.fbs)
|
|
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}/samples)
|
2014-09-10 23:01:13 +00:00
|
|
|
add_executable(flatsamplebinary ${FlatBuffers_Sample_Binary_SRCS})
|
|
|
|
add_executable(flatsampletext ${FlatBuffers_Sample_Text_SRCS})
|
|
|
|
endif()
|
2014-01-28 00:52:49 +00:00
|
|
|
|
2016-04-14 01:16:05 +00:00
|
|
|
if(FLATBUFFERS_BUILD_GRPCTEST)
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
2017-06-07 20:56:49 +00:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter -Wno-shadow")
|
2016-04-14 01:16:05 +00:00
|
|
|
endif()
|
|
|
|
add_executable(grpctest ${FlatBuffers_GRPCTest_SRCS})
|
2017-05-12 16:48:17 +00:00
|
|
|
target_link_libraries(grpctest grpc++_unsecure pthread dl)
|
2016-04-14 01:16:05 +00:00
|
|
|
endif()
|
|
|
|
|
2014-09-15 16:50:23 +00:00
|
|
|
if(FLATBUFFERS_INSTALL)
|
|
|
|
install(DIRECTORY include/flatbuffers DESTINATION include)
|
2015-07-22 12:18:59 +00:00
|
|
|
if(FLATBUFFERS_BUILD_FLATLIB)
|
|
|
|
install(TARGETS flatbuffers DESTINATION lib)
|
|
|
|
endif()
|
2015-01-02 12:51:31 +00:00
|
|
|
if(FLATBUFFERS_BUILD_FLATC)
|
|
|
|
install(TARGETS flatc DESTINATION bin)
|
|
|
|
endif()
|
2016-09-06 17:12:04 +00:00
|
|
|
if(FLATBUFFERS_BUILD_SHAREDLIB)
|
|
|
|
install(TARGETS flatbuffers_shared DESTINATION lib)
|
|
|
|
endif()
|
2014-09-15 16:50:23 +00:00
|
|
|
endif()
|
2014-07-15 13:09:36 +00:00
|
|
|
|
2014-09-10 23:01:13 +00:00
|
|
|
if(FLATBUFFERS_BUILD_TESTS)
|
2014-09-15 16:50:23 +00:00
|
|
|
enable_testing()
|
|
|
|
|
2014-09-23 18:55:42 +00:00
|
|
|
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/tests" DESTINATION
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}")
|
2014-09-15 16:50:23 +00:00
|
|
|
add_test(NAME flattests COMMAND flattests)
|
2014-09-10 23:01:13 +00:00
|
|
|
endif()
|
2015-11-17 21:39:37 +00:00
|
|
|
|
|
|
|
include(CMake/BuildFlatBuffers.cmake)
|
2015-05-13 12:15:59 +00:00
|
|
|
|
|
|
|
if(FLATBUFFERS_PACKAGE_DEBIAN)
|
|
|
|
include(CMake/PackageDebian.cmake)
|
|
|
|
endif()
|