aboutsummaryrefslogtreecommitdiff
path: root/sdk/compiler/cmake/modules/CapnProtoGenerate.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'sdk/compiler/cmake/modules/CapnProtoGenerate.cmake')
-rwxr-xr-x[-rw-r--r--]sdk/compiler/cmake/modules/CapnProtoGenerate.cmake214
1 files changed, 107 insertions, 107 deletions
diff --git a/sdk/compiler/cmake/modules/CapnProtoGenerate.cmake b/sdk/compiler/cmake/modules/CapnProtoGenerate.cmake
index 5d57cd0..8320faa 100644..100755
--- a/sdk/compiler/cmake/modules/CapnProtoGenerate.cmake
+++ b/sdk/compiler/cmake/modules/CapnProtoGenerate.cmake
@@ -1,108 +1,108 @@
-# Configuration variables (optional):
-# CAPNPC_OUTPUT_DIR
-# Directory to place compiled schema sources (default: the same directory as the schema file).
-# CAPNPC_IMPORT_DIRS
-# List of additional include directories for the schema compiler.
-# (CMAKE_CURRENT_SOURCE_DIR and CAPNP_INCLUDE_DIRS are always included.)
-# CAPNPC_SRC_PREFIX
-# Schema file source prefix (default: CMAKE_CURRENT_SOURCE_DIR).
-# CAPNPC_FLAGS
-# Additional flags to pass to the schema compiler.
-# Example usage:
-#
-# capnp_generate_cpp(CAPNP_SRCS CAPNP_HDRS schema.capnp)
-# add_executable(a a.cc ${CAPNP_SRCS} ${CAPNP_HDRS})
-# target_link_library(a ${CAPNP_LIBRARIES})
-#
-# For out-of-source builds:
-#
-# set(CAPNPC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
-# include_directories(${CAPNPC_OUTPUT_DIR})
-# capnp_generate_cpp(...)
-
-function(CAPNP_GENERATE_CPP SOURCES HEADERS)
- if(NOT ARGN)
- message(SEND_ERROR "CAPNP_GENERATE_CPP() called without any source files.")
- endif()
- if(NOT CAPNP_EXECUTABLE)
- message(SEND_ERROR "Could not locate capnp executable (CAPNP_EXECUTABLE).")
- endif()
- if(NOT CAPNPC_CXX_EXECUTABLE)
- message(SEND_ERROR "Could not locate capnpc-c++ executable (CAPNPC_CXX_EXECUTABLE).")
- endif()
- if(NOT CAPNP_INCLUDE_DIRS)
- message(SEND_ERROR "Could not locate capnp header files (CAPNP_INCLUDE_DIRS).")
- endif()
-
- # Default compiler includes
- set(include_path -I ${CMAKE_CURRENT_SOURCE_DIR} -I ${CAPNP_INCLUDE_DIRS})
-
- if(DEFINED CAPNPC_IMPORT_DIRS)
- # Append each directory as a series of '-I' flags in ${include_path}
- foreach(directory ${CAPNPC_IMPORT_DIRS})
- get_filename_component(absolute_path "${directory}" ABSOLUTE)
- list(APPEND include_path -I ${absolute_path})
- endforeach()
- endif()
-
- if(DEFINED CAPNPC_OUTPUT_DIR)
- set(output_dir "${CAPNPC_OUTPUT_DIR}")
- else()
- set(output_dir ".")
- endif()
-
- if(NOT DEFINED CAPNPC_SRC_PREFIX)
- set(CAPNPC_SRC_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}")
- endif()
- get_filename_component(CAPNPC_SRC_PREFIX "${CAPNPC_SRC_PREFIX}" ABSOLUTE)
-
- set(${SOURCES})
- set(${HEADERS})
- foreach(schema_file ${ARGN})
- get_filename_component(file_path "${schema_file}" ABSOLUTE)
- get_filename_component(file_dir "${file_path}" PATH)
-
- # Figure out where the output files will go
- if (NOT DEFINED CAPNPC_OUTPUT_DIR)
- set(output_base "${file_path}")
- else()
- # Output files are placed in CAPNPC_OUTPUT_DIR, at a location as if they were
- # relative to CAPNPC_SRC_PREFIX.
- string(LENGTH "${CAPNPC_SRC_PREFIX}" prefix_len)
- string(SUBSTRING "${file_path}" 0 ${prefix_len} output_prefix)
- if(NOT "${CAPNPC_SRC_PREFIX}" STREQUAL "${output_prefix}")
- message(SEND_ERROR "Could not determine output path for '${schema_file}' ('${file_path}') with source prefix '${CAPNPC_SRC_PREFIX}' into '${CAPNPC_OUTPUT_DIR}'.")
- endif()
-
- string(SUBSTRING "${file_path}" ${prefix_len} -1 output_path)
- set(output_base "${CAPNPC_OUTPUT_DIR}${output_path}")
- endif()
-
- MESSAGE("Output base: " ${output_base})
- MESSAGE("Output path: " ${output_path})
- MESSAGE("Output dir: " ${output_dir})
- MESSAGE("Src prefix: " ${CAPNPC_SRC_PREFIX})
-
- add_custom_command(
- OUTPUT "${output_base}.c++" "${output_base}.h"
- COMMAND ${CMAKE_COMMAND} -E make_directory ${output_dir}
- COMMAND "${CAPNP_EXECUTABLE}"
- ARGS compile
- -o ${CAPNPC_CXX_EXECUTABLE}:${output_dir}
- --verbose
- --src-prefix ${CAPNPC_SRC_PREFIX}
- ${include_path}
- ${CAPNPC_FLAGS}
- ${file_path}
- DEPENDS "${schema_file}"
- COMMENT "Compiling Cap'n Proto schema ${schema_file}"
- VERBATIM
- )
- list(APPEND ${SOURCES} "${output_base}.c++")
- list(APPEND ${HEADERS} "${output_base}.h")
- endforeach()
-
- set_source_files_properties(${${SOURCES}} ${${HEADERS}} PROPERTIES GENERATED TRUE)
- set(${SOURCES} ${${SOURCES}} PARENT_SCOPE)
- set(${HEADERS} ${${HEADERS}} PARENT_SCOPE)
+# Configuration variables (optional):
+# CAPNPC_OUTPUT_DIR
+# Directory to place compiled schema sources (default: the same directory as the schema file).
+# CAPNPC_IMPORT_DIRS
+# List of additional include directories for the schema compiler.
+# (CMAKE_CURRENT_SOURCE_DIR and CAPNP_INCLUDE_DIRS are always included.)
+# CAPNPC_SRC_PREFIX
+# Schema file source prefix (default: CMAKE_CURRENT_SOURCE_DIR).
+# CAPNPC_FLAGS
+# Additional flags to pass to the schema compiler.
+# Example usage:
+#
+# capnp_generate_cpp(CAPNP_SRCS CAPNP_HDRS schema.capnp)
+# add_executable(a a.cc ${CAPNP_SRCS} ${CAPNP_HDRS})
+# target_link_library(a ${CAPNP_LIBRARIES})
+#
+# For out-of-source builds:
+#
+# set(CAPNPC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
+# include_directories(${CAPNPC_OUTPUT_DIR})
+# capnp_generate_cpp(...)
+
+function(CAPNP_GENERATE_CPP SOURCES HEADERS)
+ if(NOT ARGN)
+ message(SEND_ERROR "CAPNP_GENERATE_CPP() called without any source files.")
+ endif()
+ if(NOT CAPNP_EXECUTABLE)
+ message(SEND_ERROR "Could not locate capnp executable (CAPNP_EXECUTABLE).")
+ endif()
+ if(NOT CAPNPC_CXX_EXECUTABLE)
+ message(SEND_ERROR "Could not locate capnpc-c++ executable (CAPNPC_CXX_EXECUTABLE).")
+ endif()
+ if(NOT CAPNP_INCLUDE_DIRS)
+ message(SEND_ERROR "Could not locate capnp header files (CAPNP_INCLUDE_DIRS).")
+ endif()
+
+ # Default compiler includes
+ set(include_path -I ${CMAKE_CURRENT_SOURCE_DIR} -I ${CAPNP_INCLUDE_DIRS})
+
+ if(DEFINED CAPNPC_IMPORT_DIRS)
+ # Append each directory as a series of '-I' flags in ${include_path}
+ foreach(directory ${CAPNPC_IMPORT_DIRS})
+ get_filename_component(absolute_path "${directory}" ABSOLUTE)
+ list(APPEND include_path -I ${absolute_path})
+ endforeach()
+ endif()
+
+ if(DEFINED CAPNPC_OUTPUT_DIR)
+ set(output_dir "${CAPNPC_OUTPUT_DIR}")
+ else()
+ set(output_dir ".")
+ endif()
+
+ if(NOT DEFINED CAPNPC_SRC_PREFIX)
+ set(CAPNPC_SRC_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}")
+ endif()
+ get_filename_component(CAPNPC_SRC_PREFIX "${CAPNPC_SRC_PREFIX}" ABSOLUTE)
+
+ set(${SOURCES})
+ set(${HEADERS})
+ foreach(schema_file ${ARGN})
+ get_filename_component(file_path "${schema_file}" ABSOLUTE)
+ get_filename_component(file_dir "${file_path}" PATH)
+
+ # Figure out where the output files will go
+ if (NOT DEFINED CAPNPC_OUTPUT_DIR)
+ set(output_base "${file_path}")
+ else()
+ # Output files are placed in CAPNPC_OUTPUT_DIR, at a location as if they were
+ # relative to CAPNPC_SRC_PREFIX.
+ string(LENGTH "${CAPNPC_SRC_PREFIX}" prefix_len)
+ string(SUBSTRING "${file_path}" 0 ${prefix_len} output_prefix)
+ if(NOT "${CAPNPC_SRC_PREFIX}" STREQUAL "${output_prefix}")
+ message(SEND_ERROR "Could not determine output path for '${schema_file}' ('${file_path}') with source prefix '${CAPNPC_SRC_PREFIX}' into '${CAPNPC_OUTPUT_DIR}'.")
+ endif()
+
+ string(SUBSTRING "${file_path}" ${prefix_len} -1 output_path)
+ set(output_base "${CAPNPC_OUTPUT_DIR}${output_path}")
+ endif()
+
+ MESSAGE("Output base: " ${output_base})
+ MESSAGE("Output path: " ${output_path})
+ MESSAGE("Output dir: " ${output_dir})
+ MESSAGE("Src prefix: " ${CAPNPC_SRC_PREFIX})
+
+ add_custom_command(
+ OUTPUT "${output_base}.c++" "${output_base}.h"
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${output_dir}
+ COMMAND "${CAPNP_EXECUTABLE}"
+ ARGS compile
+ -o ${CAPNPC_CXX_EXECUTABLE}:${output_dir}
+ --verbose
+ --src-prefix ${CAPNPC_SRC_PREFIX}
+ ${include_path}
+ ${CAPNPC_FLAGS}
+ ${file_path}
+ DEPENDS "${schema_file}"
+ COMMENT "Compiling Cap'n Proto schema ${schema_file}"
+ VERBATIM
+ )
+ list(APPEND ${SOURCES} "${output_base}.c++")
+ list(APPEND ${HEADERS} "${output_base}.h")
+ endforeach()
+
+ set_source_files_properties(${${SOURCES}} ${${HEADERS}} PROPERTIES GENERATED TRUE)
+ set(${SOURCES} ${${SOURCES}} PARENT_SCOPE)
+ set(${HEADERS} ${${HEADERS}} PARENT_SCOPE)
endfunction() \ No newline at end of file