...

Text file src/github.com/google/flatbuffers/CMake/FindFlatBuffers.cmake

Documentation: github.com/google/flatbuffers/CMake

     1# Copyright 2014 Stefan.Eilemann@epfl.ch
     2# Copyright 2014 Google Inc. All rights reserved.
     3#
     4# Licensed under the Apache License, Version 2.0 (the "License");
     5# you may not use this file except in compliance with the License.
     6# You may obtain a copy of the License at
     7#
     8#     http://www.apache.org/licenses/LICENSE-2.0
     9#
    10# Unless required by applicable law or agreed to in writing, software
    11# distributed under the License is distributed on an "AS IS" BASIS,
    12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13# See the License for the specific language governing permissions and
    14# limitations under the License.
    15
    16# Find the flatbuffers schema compiler
    17#
    18# Output Variables:
    19# * FLATBUFFERS_FLATC_EXECUTABLE the flatc compiler executable
    20# * FLATBUFFERS_FOUND
    21#
    22# Provides:
    23# * FLATBUFFERS_GENERATE_C_HEADERS(Name <files>) creates the C++ headers
    24#   for the given flatbuffer schema files.
    25#   Returns the header files in ${Name}_OUTPUTS
    26
    27set(FLATBUFFERS_CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR})
    28
    29find_program(FLATBUFFERS_FLATC_EXECUTABLE NAMES flatc)
    30find_path(FLATBUFFERS_INCLUDE_DIR NAMES flatbuffers/flatbuffers.h)
    31
    32include(FindPackageHandleStandardArgs)
    33find_package_handle_standard_args(FlatBuffers
    34  DEFAULT_MSG FLATBUFFERS_FLATC_EXECUTABLE FLATBUFFERS_INCLUDE_DIR)
    35
    36if(FLATBUFFERS_FOUND)
    37  function(FLATBUFFERS_GENERATE_C_HEADERS Name)
    38    set(FLATC_OUTPUTS)
    39    foreach(FILE ${ARGN})
    40      get_filename_component(FLATC_OUTPUT ${FILE} NAME_WE)
    41      set(FLATC_OUTPUT
    42        "${CMAKE_CURRENT_BINARY_DIR}/${FLATC_OUTPUT}_generated.h")
    43      list(APPEND FLATC_OUTPUTS ${FLATC_OUTPUT})
    44
    45      add_custom_command(OUTPUT ${FLATC_OUTPUT}
    46        COMMAND ${FLATBUFFERS_FLATC_EXECUTABLE}
    47        ARGS -c -o "${CMAKE_CURRENT_BINARY_DIR}/" ${FILE}
    48        DEPENDS ${FILE}
    49        COMMENT "Building C++ header for ${FILE}"
    50        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
    51    endforeach()
    52    set(${Name}_OUTPUTS ${FLATC_OUTPUTS} PARENT_SCOPE)
    53  endfunction()
    54
    55  set(FLATBUFFERS_INCLUDE_DIRS ${FLATBUFFERS_INCLUDE_DIR})
    56  include_directories(${CMAKE_BINARY_DIR})
    57else()
    58  set(FLATBUFFERS_INCLUDE_DIR)
    59endif()
    60
    61include("${FLATBUFFERS_CMAKE_DIR}/BuildFlatBuffers.cmake")

View as plain text