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