mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-01 19:58:15 +00:00
This adds a JavaScript language target. The generated JavaScript uses Google Closure Compiler type annotations and can be compiled using the advanced compilation mode, which performs type checking and optimizations such as inlining and dead code elimination. The generated JavaScript also exports all generated symbols for use with Node.js and RequireJS. This export behavior can be turned off with the --no-js-exports flag for use with Google Closure Compiler.
160 lines
4.8 KiB
CMake
160 lines
4.8 KiB
CMake
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)
|
|
option(FLATBUFFERS_BUILD_TESTS "Enable the build of tests and samples." ON)
|
|
option(FLATBUFFERS_INSTALL "Enable the installation of targets." ON)
|
|
option(FLATBUFFERS_BUILD_FLATLIB "Enable the build of the flatbuffers library" ON)
|
|
option(FLATBUFFERS_BUILD_FLATC "Enable the build of the flatbuffers compiler" ON)
|
|
option(FLATBUFFERS_BUILD_FLATHASH "Enable the build of flathash" ON)
|
|
|
|
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()
|
|
|
|
set(FlatBuffers_Library_SRCS
|
|
include/flatbuffers/flatbuffers.h
|
|
include/flatbuffers/hash.h
|
|
include/flatbuffers/idl.h
|
|
include/flatbuffers/util.h
|
|
include/flatbuffers/reflection.h
|
|
include/flatbuffers/reflection_generated.h
|
|
src/idl_parser.cpp
|
|
src/idl_gen_text.cpp
|
|
src/reflection.cpp
|
|
)
|
|
|
|
set(FlatBuffers_Compiler_SRCS
|
|
${FlatBuffers_Library_SRCS}
|
|
src/idl_gen_cpp.cpp
|
|
src/idl_gen_general.cpp
|
|
src/idl_gen_go.cpp
|
|
src/idl_gen_js.cpp
|
|
src/idl_gen_python.cpp
|
|
src/idl_gen_fbs.cpp
|
|
src/flatc.cpp
|
|
)
|
|
|
|
set(FlatHash_SRCS
|
|
include/flatbuffers/hash.h
|
|
src/flathash.cpp
|
|
)
|
|
|
|
set(FlatBuffers_Tests_SRCS
|
|
${FlatBuffers_Library_SRCS}
|
|
src/idl_gen_fbs.cpp
|
|
src/idl_gen_general.cpp
|
|
tests/test.cpp
|
|
# file generate by running compiler on tests/monster_test.fbs
|
|
${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_generated.h
|
|
)
|
|
|
|
set(FlatBuffers_Sample_Binary_SRCS
|
|
include/flatbuffers/flatbuffers.h
|
|
samples/sample_binary.cpp
|
|
# file generated by running compiler on samples/monster.fbs
|
|
${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
|
|
)
|
|
|
|
set(FlatBuffers_Sample_Text_SRCS
|
|
include/flatbuffers/flatbuffers.h
|
|
include/flatbuffers/hash.h
|
|
include/flatbuffers/idl.h
|
|
include/flatbuffers/util.h
|
|
src/idl_parser.cpp
|
|
src/idl_gen_text.cpp
|
|
samples/sample_text.cpp
|
|
# file generated by running compiler on samples/monster.fbs
|
|
${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
|
|
)
|
|
|
|
# source_group(Compiler FILES ${FlatBuffers_Compiler_SRCS})
|
|
# source_group(Tests FILES ${FlatBuffers_Tests_SRCS})
|
|
|
|
if(APPLE)
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++ -Wall -pedantic -Werror -Wextra")
|
|
elseif(CMAKE_COMPILER_IS_GNUCXX)
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -std=c++0x -Wall -pedantic -Werror -Wextra")
|
|
elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -std=c++0x -stdlib=libc++ -Wall -pedantic -Werror -Wextra")
|
|
endif()
|
|
|
|
if(FLATBUFFERS_CODE_COVERAGE)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fprofile-arcs -ftest-coverage")
|
|
set(CMAKE_EXE_LINKER_FLAGS
|
|
"${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
|
|
endif()
|
|
|
|
if(BIICODE)
|
|
include(biicode/cmake/biicode.cmake)
|
|
return()
|
|
endif()
|
|
|
|
include_directories(include)
|
|
|
|
if(FLATBUFFERS_BUILD_FLATLIB)
|
|
add_library(flatbuffers STATIC ${FlatBuffers_Library_SRCS})
|
|
endif()
|
|
|
|
if(FLATBUFFERS_BUILD_FLATC)
|
|
add_executable(flatc ${FlatBuffers_Compiler_SRCS})
|
|
endif()
|
|
|
|
if(FLATBUFFERS_BUILD_FLATHASH)
|
|
add_executable(flathash ${FlatHash_SRCS})
|
|
endif()
|
|
|
|
function(compile_flatbuffers_schema_to_cpp SRC_FBS)
|
|
get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
|
|
string(REGEX REPLACE "\\.fbs$" "_generated.h" GEN_HEADER ${SRC_FBS})
|
|
add_custom_command(
|
|
OUTPUT ${GEN_HEADER}
|
|
COMMAND flatc -c --no-includes --gen-mutable -o "${SRC_FBS_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
|
|
DEPENDS flatc)
|
|
endfunction()
|
|
|
|
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}
|
|
COMMAND flatc -b --schema -o "${SRC_FBS_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
|
|
DEPENDS flatc)
|
|
endfunction()
|
|
|
|
if(FLATBUFFERS_BUILD_TESTS)
|
|
compile_flatbuffers_schema_to_cpp(tests/monster_test.fbs)
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}/tests)
|
|
add_executable(flattests ${FlatBuffers_Tests_SRCS})
|
|
|
|
compile_flatbuffers_schema_to_cpp(samples/monster.fbs)
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}/samples)
|
|
add_executable(flatsamplebinary ${FlatBuffers_Sample_Binary_SRCS})
|
|
add_executable(flatsampletext ${FlatBuffers_Sample_Text_SRCS})
|
|
endif()
|
|
|
|
if(FLATBUFFERS_INSTALL)
|
|
install(DIRECTORY include/flatbuffers DESTINATION include)
|
|
if(FLATBUFFERS_BUILD_FLATLIB)
|
|
install(TARGETS flatbuffers DESTINATION lib)
|
|
endif()
|
|
if(FLATBUFFERS_BUILD_FLATC)
|
|
install(TARGETS flatc DESTINATION bin)
|
|
endif()
|
|
endif()
|
|
|
|
if(FLATBUFFERS_BUILD_TESTS)
|
|
enable_testing()
|
|
|
|
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/tests" DESTINATION
|
|
"${CMAKE_CURRENT_BINARY_DIR}")
|
|
add_test(NAME flattests COMMAND flattests)
|
|
endif()
|