|
| 1 | +include(ExternalProject) |
| 2 | + |
| 3 | +if (CMAKE_BUILD_TYPE MATCHES "Debug") |
| 4 | + SET(FLATCC_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/native/bin/flatcc_d) |
| 5 | +else () |
| 6 | + SET(FLATCC_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/native/bin/flatcc) |
| 7 | +endif () |
| 8 | + |
| 9 | +ExternalProject_Add(flatcc-native |
| 10 | + URL https://github.com/dvidelabs/flatcc/archive/v0.6.1.tar.gz |
| 11 | + URL_HASH SHA512=46ba5ca75facc7d3360dba797d24ae7bfe539a854a48831e1c7b96528cf9594d8bea22b267678fd7c6d742b6636d9e52930987119b4c6b2e38d4abe89b990cae |
| 12 | + DOWNLOAD_EXTRACT_TIMESTAMP TRUE |
| 13 | + CMAKE_ARGS |
| 14 | + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} |
| 15 | + -DBUILD_SHARED_LIBS=OFF |
| 16 | + -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/native |
| 17 | + -DFLATCC_TEST=OFF |
| 18 | + -DFLATCC_INSTALL=ON |
| 19 | + BUILD_BYPRODUCTS ${FLATCC_EXECUTABLE} |
| 20 | +) |
| 21 | + |
| 22 | +SET(FLATCC_EXECUTABLE ${FLATCC_EXECUTABLE}) |
| 23 | +add_custom_command( |
| 24 | + OUTPUT hyperion_reply_builder.h hyperion_reply_reader.h flatbuffers_common_builder.h flatbuffers_common_reader.h |
| 25 | + COMMAND ${FLATCC_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/hyperion_reply.fbs -w --common_reader --common_builder |
| 26 | + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/hyperion_reply.fbs |
| 27 | +) |
| 28 | + |
| 29 | +add_custom_command( |
| 30 | + OUTPUT hyperion_request_builder.h hyperion_request_reader.h |
| 31 | + COMMAND ${FLATCC_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/hyperion_request.fbs -w |
| 32 | + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/hyperion_request.fbs |
| 33 | +) |
| 34 | + |
| 35 | +add_custom_target(generate-fbs DEPENDS |
| 36 | + flatbuffers_common_builder.h |
| 37 | + flatbuffers_common_reader.h |
| 38 | + hyperion_reply_builder.h |
| 39 | + hyperion_reply_reader.h |
| 40 | + hyperion_request_builder.h |
| 41 | + hyperion_request_reader.h) |
| 42 | +add_dependencies(generate-fbs flatcc-native) |
| 43 | + |
| 44 | +add_library(fbs INTERFACE) |
| 45 | +target_include_directories(fbs SYSTEM INTERFACE ${CMAKE_CURRENT_BINARY_DIR}) |
| 46 | +add_dependencies(fbs generate-fbs) |
| 47 | + |
| 48 | + |
| 49 | +if (CMAKE_BUILD_TYPE MATCHES "Debug") |
| 50 | + SET(FLATCC_LIB ${CMAKE_CURRENT_BINARY_DIR}/lib/libflatccrt_d.a) |
| 51 | +else () |
| 52 | + SET(FLATCC_LIB ${CMAKE_CURRENT_BINARY_DIR}/lib/libflatccrt.a) |
| 53 | +endif () |
| 54 | + |
| 55 | +ExternalProject_Add(flatcc-target |
| 56 | + URL https://github.com/dvidelabs/flatcc/archive/v0.6.1.tar.gz |
| 57 | + URL_HASH SHA512=46ba5ca75facc7d3360dba797d24ae7bfe539a854a48831e1c7b96528cf9594d8bea22b267678fd7c6d742b6636d9e52930987119b4c6b2e38d4abe89b990cae |
| 58 | + DOWNLOAD_EXTRACT_TIMESTAMP TRUE |
| 59 | + CMAKE_ARGS |
| 60 | + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} |
| 61 | + -DCMAKE_C_FLAGS=${COMMON_FLAGS} |
| 62 | + -DCMAKE_CXX_FLAGS=${COMMON_FLAGS} |
| 63 | + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} |
| 64 | + -DBUILD_SHARED_LIBS=OFF |
| 65 | + -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR} |
| 66 | + -DFLATCC_TEST=OFF |
| 67 | + -DFLATCC_RTONLY=ON |
| 68 | + -DFLATCC_INSTALL=ON |
| 69 | + -DCMAKE_POSITION_INDEPENDENT_CODE=ON |
| 70 | + BUILD_BYPRODUCTS ${FLATCC_LIB} |
| 71 | +) |
| 72 | + |
| 73 | +add_library(flatccrt IMPORTED STATIC GLOBAL) |
| 74 | +add_dependencies(flatccrt flatcc-target) |
| 75 | +set(FLATCCRT_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/include) |
| 76 | +file(MAKE_DIRECTORY ${FLATCCRT_INCLUDE_DIRS}) |
| 77 | +set_target_properties(flatccrt PROPERTIES |
| 78 | + IMPORTED_LOCATION ${FLATCC_LIB} |
| 79 | + INTERFACE_INCLUDE_DIRECTORIES ${FLATCCRT_INCLUDE_DIRS} |
| 80 | + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${FLATCCRT_INCLUDE_DIRS} |
| 81 | +) |
0 commit comments