|
32 | 32 |
|
33 | 33 | project(cgf_custom_nodes) |
34 | 34 |
|
| 35 | +set(DRIVEWORKS_PATH "/usr/local/driveworks") |
| 36 | +set(NSIGHT_SYS_PATH "/opt/nvidia/nsight-systems/2023.1.3/") |
| 37 | +set(DWCGF_RUNNER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/bin) |
| 38 | +set(DWCGF_NODES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/nodes) |
| 39 | +set(DWCGF_GRAPHS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/graphs) |
| 40 | +set(DWCGF_APPS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/graphs/apps) |
| 41 | +set(DWCGF_NVSCI_RST ${CMAKE_CURRENT_SOURCE_DIR}/bin/nvsciipc_reset) |
| 42 | + |
| 43 | +set(DWCGF_SCHE_DIR ${SDK_BINARY_DIR}/schedule/${PROJECT_NAME}) |
| 44 | +file(MAKE_DIRECTORY ${DWCGF_SCHE_DIR}) |
| 45 | +set(DWCGF_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data) |
| 46 | + |
| 47 | +file(GLOB_RECURSE DWCGF_NODES_FILES |
| 48 | + ${DWCGF_NODES_DIR}/*.hpp |
| 49 | + ${DWCGF_NODES_DIR}/*.cpp |
| 50 | +) |
| 51 | + |
35 | 52 | #------------------------------------------------------------------------------- |
36 | 53 | # Project files |
37 | 54 | #------------------------------------------------------------------------------- |
@@ -61,8 +78,126 @@ set(LIBRARIES |
61 | 78 | dwframework |
62 | 79 | ) |
63 | 80 |
|
| 81 | +file(GLOB_RECURSE DWCGF_GRAPHS_FILES |
| 82 | + ${DWCGF_GRAPHS_DIR}/*.yaml |
| 83 | + ${DWCGF_GRAPHS_DIR}/*.json |
| 84 | +) |
| 85 | +# json-validater execute during configuring time. |
| 86 | +execute_process( |
| 87 | + COMMAND ${DRIVEWORKS_PATH}/tools/schema/validate_cgfdescriptors.py --ignore-order --ignore-array-order --ignore-indentation ${DWCGF_GRAPHS_DIR} |
| 88 | + WORKING_DIRECTORY ${DWCGF_GRAPHS_DIR} |
| 89 | + TIMEOUT 3 |
| 90 | + RESULT_VARIABLE _EXIT_CODE |
| 91 | + OUTPUT_VARIABLE _OUTPUT_CODE |
| 92 | + COMMAND_ECHO STDOUT |
| 93 | + # OUTPUT_QUIET |
| 94 | + # ERROR_QUIET |
| 95 | + # ECHO_OUTPUT_VARIABLE |
| 96 | + # https://cmake.org/cmake/help/v3.16/command/execute_process.html |
| 97 | +) |
| 98 | +message(STATUS "${_OUTPUT_CODE}") |
| 99 | +if(NOT _EXIT_CODE EQUAL 0) |
| 100 | + message(FATAL_ERROR "validate_cgfdescriptors.py failed: please check the json files.") |
| 101 | +endif() |
| 102 | + |
64 | 103 | #------------------------------------------------------------------------------- |
65 | 104 | # Custom nodes shared library |
66 | 105 | #------------------------------------------------------------------------------- |
67 | | -add_library(${PROJECT_NAME} SHARED ${SOURCES}) |
| 106 | +add_library(${PROJECT_NAME} SHARED ${SOURCES} ${DWCGF_NODES_FILES}) |
68 | 107 | target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBRARIES}) |
| 108 | +target_include_directories(${PROJECT_NAME} |
| 109 | + PUBLIC |
| 110 | + include |
| 111 | + ${CUDA_DIR}/include |
| 112 | + ${DW_ROOT}/include |
| 113 | + ${DW_ROOT}/include/3rdparty |
| 114 | + ${DW_ROOT}/include/dwshared/dwfoundation |
| 115 | + ${DW_ROOT}/include/dwshared/dwtrace |
| 116 | + ${NSIGHT_SYS_PATH}/target-linux-tegra-armv8/nvtx/include) |
| 117 | + |
| 118 | +# cgf generation |
| 119 | +set(GW_MODULE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") |
| 120 | +set(GW_MODULE_BINARY_DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/${PROJECT_NAME}/) |
| 121 | +set(GW_MODULE_LIBRARY_DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME}/) |
| 122 | +set(GW_MODULE_ARCHIVE_DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME}/) |
| 123 | +set(GW_MODULE_DATA_DESTINATION ${CMAKE_INSTALL_PREFIX}/data/${PROJECT_NAME}) |
| 124 | +set(GW_MODULE_GRAPHS_DESTINATION ${CMAKE_INSTALL_PREFIX}/graphs/${PROJECT_NAME}) |
| 125 | + |
| 126 | +set(DWCGF_APP_LIST |
| 127 | + example/appHelloworld; |
| 128 | +) |
| 129 | +foreach(DWCGF_APP ${DWCGF_APP_LIST}) |
| 130 | + get_filename_component(DWCGF_APP_DIRNAME ${DWCGF_APPS_DIR}/${DWCGF_APP} NAME) |
| 131 | + get_filename_component(DWCGF_APP_FOLDERPATH ${DWCGF_APPS_DIR}/${DWCGF_APP} PATH) |
| 132 | + get_filename_component(DWCGF_APP_FOLDERNAME ${DWCGF_APP_FOLDERPATH} NAME) |
| 133 | + string(REGEX REPLACE "^app" "" DWCGF_APP_TYPE ${DWCGF_APP_DIRNAME}) |
| 134 | + set(DWCGF_FILE_PREFIX DWCGF${DWCGF_APP_TYPE}) |
| 135 | + set(DWCGF_RUNNER ${DWCGF_RUNNER_DIR}/${DWCGF_APP_FOLDERNAME}/run${DWCGF_APP_TYPE}.sh) |
| 136 | + set(DWCGF_YAML ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.yaml) |
| 137 | + set(DWCGF_YAML_LOG ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.yaml.log) |
| 138 | + set(DWCGF_STM ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.stm) |
| 139 | + set(DWCGF_STM_LOG ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.stm.log) |
| 140 | + set(DWCGF_SVG ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.svg) |
| 141 | + set(DWCGF_SVG_LOG ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.svg.log) |
| 142 | + set(DWCGF_HTML ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.html) |
| 143 | + set(DWCGF_HTML_LOG ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.html.log) |
| 144 | + # app2yaml |
| 145 | + add_custom_command( |
| 146 | + OUTPUT ${DWCGF_YAML} |
| 147 | + COMMAND ${DRIVEWORKS_PATH}/tools/descriptionScheduleYamlGenerator/descriptionScheduleYamlGenerator.py --app ${DWCGF_APPS_DIR}/${DWCGF_APP}/${DWCGF_FILE_PREFIX}.app.json --output ${DWCGF_YAML} 2>&1 | tee ${DWCGF_YAML_LOG} |
| 148 | + WORKING_DIRECTORY ${DWCGF_SCHE_DIR} |
| 149 | + MAIN_DEPENDENCY ${DWCGF_APPS_DIR}/${DWCGF_APP}/${DWCGF_FILE_PREFIX}.app.json |
| 150 | + DEPENDS ${DWCGF_GRAPHS_FILES} |
| 151 | + COMMENT "app2yaml[${DWCGF_APP_TYPE}]...!" |
| 152 | + VERBATIM |
| 153 | + ) |
| 154 | + add_custom_target(${PROJECT_NAME}_yaml${DWCGF_APP_TYPE} ALL DEPENDS ${DWCGF_YAML}) |
| 155 | + # yaml2stm |
| 156 | + add_custom_command( |
| 157 | + OUTPUT ${DWCGF_STM} |
| 158 | + COMMAND ${DRIVEWORKS_PATH}/tools/stmcompiler -i ${DWCGF_YAML} -k 2>&1 | tee ${DWCGF_STM_LOG} |
| 159 | + WORKING_DIRECTORY ${DWCGF_SCHE_DIR} |
| 160 | + MAIN_DEPENDENCY ${DWCGF_YAML} |
| 161 | + DEPENDS ${PROJECT_NAME}_yaml${DWCGF_APP_TYPE} |
| 162 | + COMMENT "yaml2stm[${DWCGF_APP_TYPE}]...!" |
| 163 | + VERBATIM |
| 164 | + ) |
| 165 | + add_custom_target(${PROJECT_NAME}_stm${DWCGF_APP_TYPE} ALL DEPENDS ${DWCGF_STM}) |
| 166 | + # yaml2svg |
| 167 | + # add_custom_command( |
| 168 | + # OUTPUT ${DWCGF_SVG} |
| 169 | + # COMMAND ${DRIVEWORKS_PATH}/tools/stmvizgraph -i ${DWCGF_YAML} -o ${DWCGF_SVG} 2>&1 | tee ${DWCGF_SVG_LOG} |
| 170 | + # WORKING_DIRECTORY ${DWCGF_SCHE_DIR} |
| 171 | + # MAIN_DEPENDENCY ${DWCGF_YAML} |
| 172 | + # DEPENDS ${PROJECT_NAME}_yaml${DWCGF_APP_TYPE} |
| 173 | + # COMMENT "yaml2svg[${DWCGF_APP_TYPE}]...!" |
| 174 | + # VERBATIM |
| 175 | + # ) |
| 176 | + # add_custom_target(${PROJECT_NAME}_svg${DWCGF_APP_TYPE} ALL DEPENDS ${DWCGF_SVG}) |
| 177 | + # stm2html |
| 178 | + add_custom_command( |
| 179 | + OUTPUT ${DWCGF_HTML} |
| 180 | + COMMAND ${DRIVEWORKS_PATH}/tools/stmcompiler -i ${DWCGF_YAML} -o ${DWCGF_STM} -k 2>&1 | tee ${DWCGF_STM_LOG} |
| 181 | + COMMAND ${DRIVEWORKS_PATH}/tools/stmvizschedule -i ${DWCGF_STM} -o ${DWCGF_HTML} 2>&1 | tee ${DWCGF_HTML_LOG} |
| 182 | + WORKING_DIRECTORY ${DWCGF_SCHE_DIR} |
| 183 | + MAIN_DEPENDENCY ${DWCGF_STM} |
| 184 | + DEPENDS ${PROJECT_NAME}_stm${DWCGF_APP_TYPE} |
| 185 | + COMMENT "stm2html[${DWCGF_APP_TYPE}]...!" |
| 186 | + VERBATIM |
| 187 | + ) |
| 188 | + add_custom_target(${PROJECT_NAME}_html${DWCGF_APP_TYPE} ALL DEPENDS ${DWCGF_HTML}) |
| 189 | + install(FILES ${DWCGF_YAML} DESTINATION "${GW_MODULE_BINARY_DESTINATION}") |
| 190 | + # install(FILES ${DWCGF_SVG} DESTINATION "${GW_MODULE_BINARY_DESTINATION}") |
| 191 | + install(FILES ${DWCGF_STM} DESTINATION "${GW_MODULE_BINARY_DESTINATION}") |
| 192 | + install(FILES ${DWCGF_HTML} DESTINATION "${GW_MODULE_BINARY_DESTINATION}") |
| 193 | + install(PROGRAMS ${DWCGF_RUNNER} DESTINATION ${GW_MODULE_BINARY_DESTINATION}/${DWCGF_APP_FOLDERNAME}) |
| 194 | +endforeach() |
| 195 | + |
| 196 | +# ------------------------------------------------------------------------------ |
| 197 | +# Install target |
| 198 | +# ------------------------------------------------------------------------------ |
| 199 | +sdk_add_sample(${PROJECT_NAME}) |
| 200 | + |
| 201 | +install(DIRECTORY ${DWCGF_GRAPHS_DIR}/ DESTINATION ${GW_MODULE_GRAPHS_DESTINATION}) |
| 202 | +install(DIRECTORY ${DWCGF_DATA_DIR}/ DESTINATION ${GW_MODULE_DATA_DESTINATION}) |
| 203 | +install(PROGRAMS ${DWCGF_NVSCI_RST} DESTINATION ${GW_MODULE_BINARY_DESTINATION}) |
0 commit comments