| # Copyright 2022 Meta |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| find_program(THRIFT_EXECUTABLE thrift) |
| if(NOT THRIFT_EXECUTABLE) |
| message(FATAL_ERROR "The 'thrift' command was not found") |
| endif() |
| |
| function(thrift |
| target # CMake target (for dependencies / headers) |
| lang # The language for generated sources |
| lang_opts # Language options (e.g. ':no_skeleton') |
| out_dir # Output directory for generated files |
| # (do not include 'gen-cpp', etc) |
| source_file # The .thrift source file |
| options # Additional thrift options |
| |
| # Generated files in ${ARGN} |
| ) |
| file(MAKE_DIRECTORY ${out_dir}) |
| add_custom_command( |
| OUTPUT ${ARGN} |
| COMMAND |
| ${THRIFT_EXECUTABLE} |
| --gen ${lang}${lang_opts} |
| -o ${out_dir} |
| ${source_file} |
| ${options} |
| DEPENDS ${source_file} |
| ) |
| |
| target_include_directories(${target} PRIVATE ${out_dir}/gen-${lang}) |
| endfunction() |