| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| cmake_minimum_required(VERSION 2.6) |
| |
| # Helper function to generate build rules. For each input flatbuffer file (*.fbs), this |
| # function will generate a rule that maps the input file to an output c++ file. |
| # The flatbuffers compiler will generate multiple output files for each input file. In |
| # particular, it will generate a '_generated.h' for c++ and one .java file per flatbuffer |
| # table definition. |
| # |
| # To call this function, pass it the output file list followed by the input flatbuffers |
| # files: e.g. FB_GEN(OUTPUT_FILES, ${FLATBUFFER_FILES}) |
| # |
| function(FB_GEN VAR) |
| IF (NOT ARGN) |
| MESSAGE(SEND_ERROR "Error: FB_GEN called without any src files") |
| RETURN() |
| ENDIF(NOT ARGN) |
| |
| set(${VAR}) |
| foreach(FIL ${ARGN}) |
| # Get full path |
| get_filename_component(ABS_FIL ${FIL} ABSOLUTE) |
| # Get basename |
| get_filename_component(FIL_WE ${FIL} NAME_WE) |
| |
| set(OUTPUT_BE_FILE "${BE_OUTPUT_DIR}/${FIL_WE}_generated.h") |
| list(APPEND ${VAR} ${OUTPUT_BE_FILE}) |
| |
| add_custom_command( |
| OUTPUT ${OUTPUT_BE_FILE} |
| COMMAND ${FLATBUFFERS_COMPILER} ${CPP_ARGS} ${FIL} |
| COMMAND ${FLATBUFFERS_COMPILER} ${JAVA_FE_ARGS} ${FIL} |
| DEPENDS ${ABS_FIL} |
| COMMENT "Running FlatBuffers compiler on ${FIL}" |
| VERBATIM |
| ) |
| endforeach(FIL) |
| |
| set(${VAR} ${${VAR}} PARENT_SCOPE) |
| endfunction(FB_GEN) |
| |
| message("Using FlatBuffers compiler: ${FLATBUFFERS_COMPILER}") |
| set(BE_OUTPUT_DIR ${CMAKE_SOURCE_DIR}/be/generated-sources/gen-cpp) |
| set(FE_OUTPUT_DIR ${CMAKE_SOURCE_DIR}/fe/generated-sources/gen-java) |
| file(MAKE_DIRECTORY ${FE_OUTPUT_DIR}) |
| file(MAKE_DIRECTORY ${BE_OUTPUT_DIR}) |
| set(JAVA_FE_ARGS --gen-mutable --java -o ${FE_OUTPUT_DIR} -b) |
| message(${JAVA_FE_ARGS}) |
| set(CPP_ARGS --cpp -o ${BE_OUTPUT_DIR} -b) |
| message(${CPP_ARGS}) |
| |
| # Add new FlatBuffer schema files here. |
| set (SRC_FILES |
| CatalogObjects.fbs |
| ) |
| |
| FB_GEN(FB_ALL_FILES ${SRC_FILES}) |
| add_custom_target(fb-deps ALL DEPENDS ${FB_ALL_FILES}) |
| |