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