Improve springbok bytecode and c module compilation Improve springbok bytecode and c module compilation by taking advantage of the latest upstream IREE improvements. Merge springbok_bytecode_module and springbok_c_module into springbok_static_module and make it simpler. Rename util to util_static for further vmvx expansion. Change-Id: Ia81fb43f3bdab64372e0d9010211bddb39cce2b7
diff --git a/CMakeLists.txt b/CMakeLists.txt index 74835f8..d44e160 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -81,8 +81,7 @@ set(IREE_ROOT_DIR "${IREE_SOURCE_DIR}" CACHE PATH "IREE Root directory") include(springbok_ops) -include(springbok_bytecode_module) -include(springbok_c_module) +include(springbok_static_module) include(springbok_modules) include(iree_model_input) include(springbok_test)
diff --git a/cmake/springbok_bytecode_module.cmake b/cmake/springbok_bytecode_module.cmake deleted file mode 100644 index 87ffc12..0000000 --- a/cmake/springbok_bytecode_module.cmake +++ /dev/null
@@ -1,159 +0,0 @@ -include(CMakeParseArguments) - -# springbok_bytecode_module() -# -# A wrapper for the iree_bytecode_module to apply common iree-compile flags -# Parameters: -# NAME: Name of target. -# SRC: Source file to compile into a bytecode module. Support relative path. -# FLAGS: Flags to pass to the translation tool (list of strings). -# C_IDENTIFIER: Identifier to use for generate c embed code. -# If omitted then no C embed code will be generated. -# RVV_OFF: Indicate RVV is OFF (default: ON) -# -# Examples: -# springbok_bytecode_module( -# NAME -# daredevel_bytecode_module_static -# SRC -# "daredevil_quant.tflite" -# C_IDENTIFIER -# "daredevil_bytecode_module_static" -# FLAGS -# "-iree-input-type=tosa" -# ) -# -# springbok_bytecode_module( -# NAME -# simple_float_mul_bytecode_module_static -# SRC -# "simple_float_mul.mlir" -# C_IDENTIFIER -# "simple_float_mul_bytecode_module_static" -# FLAGS -# "-iree-input-type=mhlo" -# RVV_OFF -# PUBLIC -# ) -# -function(springbok_bytecode_module) - cmake_parse_arguments( - _RULE - "PUBLIC;RVV_OFF" - "NAME;SRC;C_IDENTIFIER" - "FLAGS" - ${ARGN} - ) - - set(_MLIR_SRC "${_RULE_SRC}") - string(FIND "${_RULE_SRC}" ".tflite" _IS_TFLITE REVERSE) - if(${_IS_TFLITE} GREATER 0) - iree_get_executable_path(IREE_IMPORT_TFLITE_TOOL "iree-import-tflite") - set(_MLIR_SRC "${CMAKE_CURRENT_BINARY_DIR}/${_RULE_NAME}.mlir") - get_filename_component(_SRC_PATH "${_RULE_SRC}" REALPATH) - set(_ARGS "${_SRC_PATH}") - list(APPEND _ARGS "-o") - list(APPEND _ARGS "${_RULE_NAME}.mlir") - # Only add the custom_command here. The output is passed to - # iree_bytecode_module as the source. - add_custom_command( - OUTPUT - "${_RULE_NAME}.mlir" - COMMAND - ${IREE_IMPORT_TFLITE_TOOL} - ${_ARGS} - DEPENDS - ${IREE_IMPORT_TFLITE_TOOL} - ) - endif() - - get_filename_component(_MLIR_SRC "${_MLIR_SRC}" REALPATH) - iree_get_executable_path(_TRANSLATE_TOOL_EXECUTABLE "iree-compile") - iree_get_executable_path(_LINKER_TOOL_EXECUTABLE "lld") - - # Replace dependencies passed by ::name with iree::package::name - iree_package_ns(_PACKAGE_NS) - list(TRANSFORM _RULE_DEPS REPLACE "^::" "${_PACKAGE_NS}::") - - # Prefix the library with the package name, so we get: iree_package_name. - iree_package_name(_PACKAGE_NAME) - - set(_LIB_NAME "${_PACKAGE_NAME}_${_RULE_NAME}") - set(_O_FILE_NAME ${_RULE_NAME}.o) - set(_H_FILE_NAME ${_RULE_NAME}.h) - set(_VMFB_FILE_NAME ${_RULE_NAME}.vmfb) - - set(_CPU_FEATURES "+m,+f,+zvl512b,+zve32x") - if (${_RULE_RVV_OFF}) - set(_CPU_FEATURES "+m,+f") - endif() - - ## Example with VM C module. - # Setup args for iree-compile. - set(_TRANSLATE_ARGS ${_RULE_FLAGS}) - list(APPEND _TRANSLATE_ARGS "-iree-llvm-debug-symbols=false") - list(APPEND _TRANSLATE_ARGS "-iree-vm-bytecode-module-strip-source-map=true") - list(APPEND _TRANSLATE_ARGS "-iree-vm-emit-polyglot-zip=false") - list(APPEND _TRANSLATE_ARGS "-iree-hal-target-backends=llvm-cpu") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-triple=riscv32-pc-linux-elf") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-cpu=generic-rv32") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-cpu-features=${_CPU_FEATURES}") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-abi=ilp32") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-link-embedded=false") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-link-static") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-system-linker-path=\"${_LINKER_TOOL_EXECUTABLE}\"") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-static-library-output-path=${_O_FILE_NAME}") - list(APPEND _TRANSLATE_ARGS "${_MLIR_SRC}") - list(APPEND _TRANSLATE_ARGS "-o") - list(APPEND _TRANSLATE_ARGS "${_VMFB_FILE_NAME}") - - # Custom command for iree-compile to generate static library and C module. - add_custom_command( - OUTPUT - ${_H_FILE_NAME} - ${_O_FILE_NAME} - ${_VMFB_FILE_NAME} - COMMAND ${_TRANSLATE_TOOL_EXECUTABLE} ${_TRANSLATE_ARGS} - DEPENDS ${_TRANSLATE_TOOL_EXECUTABLE} ${_MLIR_SRC} ${_LINKER_TOOL_EXECUTABLE} - ) - - add_library(${_LIB_NAME} - STATIC - ${_O_FILE_NAME} - ) - - SET_TARGET_PROPERTIES( - ${_LIB_NAME} - PROPERTIES - LINKER_LANGUAGE C - ) - - # Alias the iree_package_name library to iree::package::name. - # This lets us more clearly map to Bazel and makes it possible to - # disambiguate the underscores in paths vs. the separators. - add_library(${_PACKAGE_NS}::${_RULE_NAME} ALIAS ${_LIB_NAME}) - iree_package_dir(_PACKAGE_DIR) - if(${_RULE_NAME} STREQUAL ${_PACKAGE_DIR}) - add_library(${_PACKAGE_NS} ALIAS ${_LIB_NAME}) - endif() - - set(_RULE_C_NAME "${_RULE_NAME}_c") - set(_H_FILE_NAME ${_RULE_C_NAME}.h) - set(_C_FILE_NAME ${_RULE_C_NAME}.c) - - # Generate the embed data with the bytecode module - iree_c_embed_data( - NAME - "${_RULE_C_NAME}" - IDENTIFIER - "${_RULE_C_IDENTIFIER}" - GENERATED_SRCS - "${_VMFB_FILE_NAME}" - C_FILE_OUTPUT - "${_C_FILE_NAME}" - H_FILE_OUTPUT - "${_H_FILE_NAME}" - FLATTEN - PUBLIC - ) -endfunction()
diff --git a/cmake/springbok_c_module.cmake b/cmake/springbok_c_module.cmake deleted file mode 100644 index bb9a53a..0000000 --- a/cmake/springbok_c_module.cmake +++ /dev/null
@@ -1,153 +0,0 @@ -include(CMakeParseArguments) - -# springbok_c_module() -# -# A wrapper for the iree c module to apply common iree-compile flags -# Parameters: -# NAME: Name of target. -# SRC: Source file to compile into an emitC module. Support relative path. -# FLAGS: Flags to pass to the translation tool (list of strings). -# C_IDENTIFIER: Identifier to use for generate c embed code. -# If omitted then no C embed code will be generated. -# RVV_OFF: Indicate RVV is OFF (default: ON) -# -# Examples: -# springbok_c_module( -# NAME -# dare_devel_c_module_emitc_static -# SRC -# "daredevil_quant.tflite" -# FLAGS -# "-iree-input-type=tosa" -# ) -# -# springbok_c_module( -# NAME -# simple_float_mul_c_module_emitc_static -# SRC -# "simple_float_mul.mlir" -# FLAGS -# "-iree-input-type=mhlo" -# RVV_OFF -# PUBLIC -# ) -# -function(springbok_c_module) - cmake_parse_arguments( - _RULE - "PUBLIC;RVV_OFF" - "NAME;SRC" - "FLAGS" - ${ARGN} - ) - - set(_MLIR_SRC "${_RULE_SRC}") - string(FIND "${_RULE_SRC}" ".tflite" _IS_TFLITE REVERSE) - if(${_IS_TFLITE} GREATER 0) - iree_get_executable_path(IREE_IMPORT_TFLITE_TOOL "iree-import-tflite") - set(_MLIR_SRC "${CMAKE_CURRENT_BINARY_DIR}/${_RULE_NAME}.mlir") - get_filename_component(_SRC_PATH "${_RULE_SRC}" REALPATH) - set(_ARGS "${_SRC_PATH}") - list(APPEND _ARGS "-o") - list(APPEND _ARGS "${_RULE_NAME}.mlir") - # Only add the custom_command here. The output is passed to - # iree_bytecode_module as the source. - add_custom_command( - OUTPUT - "${_RULE_NAME}.mlir" - COMMAND - ${IREE_IMPORT_TFLITE_TOOL} - ${_ARGS} - DEPENDS - ${IREE_IMPORT_TFLITE_TOOL} - ) - endif() - - get_filename_component(_MLIR_SRC "${_MLIR_SRC}" REALPATH) - iree_get_executable_path(_TRANSLATE_TOOL_EXECUTABLE "iree-compile") - iree_get_executable_path(_LINKER_TOOL_EXECUTABLE "lld") - - # Replace dependencies passed by ::name with iree::package::name - iree_package_ns(_PACKAGE_NS) - list(TRANSFORM _RULE_DEPS REPLACE "^::" "${_PACKAGE_NS}::") - - # Prefix the library with the package name, so we get: iree_package_name. - iree_package_name(_PACKAGE_NAME) - - set(_RULE_C_NAME "${_RULE_NAME}_c") - set(_LIB_NAME "${_PACKAGE_NAME}_${_RULE_C_NAME}") - set(_O_FILE_NAME ${_RULE_C_NAME}.o) - set(_H_FILE_NAME ${_RULE_C_NAME}.h) - set(_RULE_EMITC_NAME "${_RULE_NAME}_emitc") - set(_EMITC_LIB_NAME "${_PACKAGE_NAME}_${_RULE_EMITC_NAME}") - set(_EMITC_FILE_NAME ${_RULE_EMITC_NAME}.h) - - set(_CPU_FEATURES "+m,+f,+zvl512b,+zve32x") - if (${_RULE_RVV_OFF}) - set(_CPU_FEATURES "+m,+f") - endif() - - ## Example with VM C module. - # Setup args for iree-compile. - set(_TRANSLATE_ARGS ${_RULE_FLAGS}) - list(APPEND _TRANSLATE_ARGS "-iree-llvm-debug-symbols=false") - list(APPEND _TRANSLATE_ARGS "-iree-mlir-to-vm-c-module") - list(APPEND _TRANSLATE_ARGS "-iree-hal-target-backends=llvm-cpu") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-triple=riscv32-pc-linux-elf") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-cpu=generic-rv32") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-cpu-features=${_CPU_FEATURES}") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-target-abi=ilp32") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-link-embedded=false") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-link-static") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-system-linker-path=\"${_LINKER_TOOL_EXECUTABLE}\"") - list(APPEND _TRANSLATE_ARGS "-iree-llvm-static-library-output-path=${_O_FILE_NAME}") - list(APPEND _TRANSLATE_ARGS "${_MLIR_SRC}") - list(APPEND _TRANSLATE_ARGS "-o") - list(APPEND _TRANSLATE_ARGS "${_EMITC_FILE_NAME}") - - # Custom command for iree-compile to generate static library and C module. - add_custom_command( - OUTPUT - ${_H_FILE_NAME} - ${_O_FILE_NAME} - ${_EMITC_FILE_NAME} - COMMAND ${_TRANSLATE_TOOL_EXECUTABLE} ${_TRANSLATE_ARGS} - DEPENDS ${_TRANSLATE_TOOL_EXECUTABLE} ${_MLIR_SRC} ${_LINKER_TOOL_EXECUTABLE} - ) - - add_library(${_LIB_NAME} - STATIC - ${_O_FILE_NAME} - ) - - SET_TARGET_PROPERTIES( - ${_LIB_NAME} - PROPERTIES - LINKER_LANGUAGE C - ) - - add_library(${_EMITC_LIB_NAME} - STATIC - ${_EMITC_FILE_NAME} - ) - target_compile_definitions(${_EMITC_LIB_NAME} PUBLIC EMITC_IMPLEMENTATION) - - SET_TARGET_PROPERTIES( - ${_EMITC_LIB_NAME} - PROPERTIES - LINKER_LANGUAGE C - ) - - # Alias the iree_package_name library to iree::package::name. - # This lets us more clearly map to Bazel and makes it possible to - # disambiguate the underscores in paths vs. the separators. - add_library(${_PACKAGE_NS}::${_RULE_C_NAME} ALIAS ${_LIB_NAME}) - add_library(${_PACKAGE_NS}::${_RULE_EMITC_NAME} ALIAS ${_EMITC_LIB_NAME}) - iree_package_dir(_PACKAGE_DIR) - if(${_RULE_C_NAME} STREQUAL ${_PACKAGE_DIR}) - add_library(${_PACKAGE_NS} ALIAS ${_LIB_NAME}) - endif() - if(${_RULE_EMITC_NAME} STREQUAL ${_PACKAGE_DIR}) - add_library(${_PACKAGE_NS} ALIAS ${_EMITC_LIB_NAME}) - endif() -endfunction()
diff --git a/cmake/springbok_modules.cmake b/cmake/springbok_modules.cmake index d83be9e..1bb68ec 100644 --- a/cmake/springbok_modules.cmake +++ b/cmake/springbok_modules.cmake
@@ -50,7 +50,7 @@ set(_RVV_OFF_ARG "RVV_OFF") endif() - springbok_bytecode_module( + springbok_static_module( NAME "${_RULE_NAME}_bytecode_module_static" SRC @@ -60,10 +60,9 @@ FLAGS "${_RULE_FLAGS}" "${_RVV_OFF_ARG}" - PUBLIC ) - springbok_c_module( + springbok_static_module( NAME "${_RULE_NAME}_c_module_static" SRC @@ -71,7 +70,7 @@ FLAGS "${_RULE_FLAGS}" "${_RVV_OFF_ARG}" - PUBLIC + EMITC ) endfunction()
diff --git a/cmake/springbok_static_module.cmake b/cmake/springbok_static_module.cmake new file mode 100644 index 0000000..52ca1d6 --- /dev/null +++ b/cmake/springbok_static_module.cmake
@@ -0,0 +1,146 @@ +include(CMakeParseArguments) + +# springbok_static_module() +# +# A modified version of iree_static_linker_test to apply common iree-compile flags +# Parameters: +# NAME: Name of target. +# SRC: Source file to compile into a bytecode module. Support relative path. +# C_IDENTIFIER: Identifier to use for generate c embed code. +# FLAGS: Flags to pass to the translation tool (list of strings). +# RVV_OFF: Indicate RVV is OFF (default: ON) +# EMITC: Uses EmitC to output C code instead of VM bytecode. +# +# Examples: +# springbok_static_module( +# NAME +# daredevel_bytecode_module_static +# SRC +# "daredevil_quant.tflite" +# C_IDENTIFIER +# "daredevil_bytecode_module_static" +# FLAGS +# "-iree-input-type=tosa" +# ) +# +# springbok_static_module( +# NAME +# simple_float_mul_c_module_static +# SRC +# "simple_float_mul.mlir" +# C_IDENTIFIER +# "simple_float_mul" +# FLAGS +# "-iree-input-type=mhlo" +# RVV_OFF +# EMITC +# ) +# +function(springbok_static_module) + cmake_parse_arguments( + _RULE + "RVV_OFF;EMITC" + "NAME;SRC;C_IDENTIFIER" + "FLAGS" + ${ARGN} + ) + + set(_MLIR_SRC "${_RULE_SRC}") + string(FIND "${_RULE_SRC}" ".tflite" _IS_TFLITE REVERSE) + if(${_IS_TFLITE} GREATER 0) + iree_get_executable_path(IREE_IMPORT_TFLITE_TOOL "iree-import-tflite") + set(_MLIR_SRC "${CMAKE_CURRENT_BINARY_DIR}/${_RULE_NAME}.mlir") + get_filename_component(_SRC_PATH "${_RULE_SRC}" REALPATH) + set(_ARGS "${_SRC_PATH}") + list(APPEND _ARGS "-o") + list(APPEND _ARGS "${_RULE_NAME}.mlir") + # Only add the custom_command here. The output is passed to + # iree_bytecode_module as the source. + add_custom_command( + OUTPUT + "${_RULE_NAME}.mlir" + COMMAND + ${IREE_IMPORT_TFLITE_TOOL} + ${_ARGS} + DEPENDS + ${IREE_IMPORT_TFLITE_TOOL} + ) + endif() + + iree_get_executable_path(_COMPILER_TOOL "iree-compile") + iree_package_name(_PACKAGE_NAME) + iree_package_ns(_PACKAGE_NS) + + set(_CPU_FEATURES "+m,+f,+zvl512b,+zve32x") + if (${_RULE_RVV_OFF}) + set(_CPU_FEATURES "+m,+f") + endif() + + # Set common iree-compile flags + set(_COMPILER_ARGS ${_RULE_FLAGS}) + list(APPEND _COMPILER_ARGS "--iree-hal-target-backends=llvm-cpu") + list(APPEND _COMPILER_ARGS "-iree-llvm-debug-symbols=false") + list(APPEND _COMPILER_ARGS "-iree-vm-bytecode-module-strip-source-map=true") + list(APPEND _COMPILER_ARGS "-iree-vm-emit-polyglot-zip=false") + list(APPEND _COMPILER_ARGS "-iree-llvm-target-triple=riscv32-pc-linux-elf") + list(APPEND _COMPILER_ARGS "-iree-llvm-target-cpu=generic-rv32") + list(APPEND _COMPILER_ARGS "-iree-llvm-target-cpu-features=${_CPU_FEATURES}") + list(APPEND _COMPILER_ARGS "-iree-llvm-target-abi=ilp32") + list(APPEND _COMPILER_ARGS "-iree-llvm-link-embedded=false") + + if(_RULE_EMITC) + set(_O_FILE_NAME "${_RULE_NAME}_c.o") + set(_H_FILE_NAME "${_RULE_NAME}_emitc.h") + set(_MODULE_NAME "${_RULE_NAME}_emitc") + iree_c_module( + NAME + ${_MODULE_NAME} + SRC + "${_MLIR_SRC}" + FLAGS + ${_COMPILER_ARGS} + H_FILE_OUTPUT + "${_H_FILE_NAME}" + STATIC_LIB_PATH + "${_O_FILE_NAME}" + NO_RUNTIME + ) + else() # bytecode module path + # Generate the embed data with the bytecode module. + set(_O_FILE_NAME "${_RULE_NAME}.o") + set(_H_FILE_NAME "${_RULE_NAME}.h") + set(_MODULE_NAME "${_RULE_NAME}") + if(NOT _RULE_C_IDENTIFIER) + set(_RULE_C_IDENTIFIER "${_PACKAGE_NAME}_${_RULE_NAME}") + endif() + + iree_bytecode_module( + NAME + ${_MODULE_NAME} + SRC + "${_MLIR_SRC}" + FLAGS + ${_COMPILER_ARGS} + STATIC_LIB_PATH + "${_O_FILE_NAME}" + C_IDENTIFIER + "${_RULE_C_IDENTIFIER}" + PUBLIC + ) + endif(_RULE_EMITC) + + set(_NAME "${_RULE_NAME}_lib") + set(_LIB_NAME "${_PACKAGE_NAME}_${_NAME}") + add_library(${_LIB_NAME} + STATIC + ${_O_FILE_NAME} + ) + SET_TARGET_PROPERTIES( + ${_LIB_NAME} + PROPERTIES + LINKER_LANGUAGE C + ) + + # Set alias for this static library to be used later in the function. + add_library(${_PACKAGE_NS}::${_NAME} ALIAS ${_LIB_NAME}) +endfunction()
diff --git a/model_util/CMakeLists.txt b/model_util/CMakeLists.txt index 40c7118..ce3cae0 100644 --- a/model_util/CMakeLists.txt +++ b/model_util/CMakeLists.txt
@@ -1,17 +1,15 @@ iree_cc_library( NAME - util + util_base HDRS "util.h" SRCS "util.c" DEPS ::alloc - device::device_static_loader iree::base iree::hal iree::hal::local - iree::hal::local::loaders::static_library_loader iree::hal::drivers::local_sync::sync_driver iree::modules::hal iree::vm @@ -20,6 +18,15 @@ iree_cc_library( NAME + util_static + DEPS + ::util_base + device::device_static_loader + iree::hal::local::loaders::static_library_loader +) + +iree_cc_library( + NAME alloc HDRS "alloc.h"
diff --git a/samples/microbenchmarks/CMakeLists.txt b/samples/microbenchmarks/CMakeLists.txt index df7230b..ee7135a 100644 --- a/samples/microbenchmarks/CMakeLists.txt +++ b/samples/microbenchmarks/CMakeLists.txt
@@ -4,7 +4,7 @@ # https://github.com/llvm/llvm-project/blob/0eeab8b/llvm/lib/Target/RISCV/RISCVSubtarget.cpp#L30-L51 # ------------------------------------------------------------------------------- -springbok_c_module( +springbok_static_module( NAME conv1x1_test SRC @@ -13,6 +13,7 @@ "-iree-input-type=tosa" "-riscv-v-vector-bits-min=512" "-riscv-v-fixed-length-vector-lmul-max=8" + EMITC PUBLIC ) @@ -22,9 +23,9 @@ SRCS "conv1x1_test.c" DEPS - ::conv1x1_test_c ::conv1x1_test_emitc - model_util::util + ::conv1x1_test_lib + model_util::util_static LINKOPTS "LINKER:--defsym=__stack_size__=64k" COPTS
diff --git a/samples/simple_vec_mul/CMakeLists.txt b/samples/simple_vec_mul/CMakeLists.txt index c521d7f..6f46eca 100644 --- a/samples/simple_vec_mul/CMakeLists.txt +++ b/samples/simple_vec_mul/CMakeLists.txt
@@ -50,10 +50,10 @@ SRCS "float_vec.c" DEPS - ::simple_float_mul_bytecode_module_static ::simple_float_mul_bytecode_module_static_c + ::simple_float_mul_bytecode_module_static_lib iree::vm::bytecode_module - model_util::util + model_util::util_static LINKOPTS "LINKER:--defsym=__stack_size__=20k" ) @@ -64,9 +64,9 @@ SRCS "float_vec.c" DEPS - ::simple_float_mul_c_module_static_c ::simple_float_mul_c_module_static_emitc - model_util::util + ::simple_float_mul_c_module_static_lib + model_util::util_static LINKOPTS "LINKER:--defsym=__stack_size__=20k" COPTS @@ -79,10 +79,10 @@ SRCS "int_vec.c" DEPS - ::simple_int_mul_bytecode_module_static ::simple_int_mul_bytecode_module_static_c + ::simple_int_mul_bytecode_module_static_lib iree::vm::bytecode_module - model_util::util + model_util::util_static LINKOPTS "LINKER:--defsym=__stack_size__=20k" ) @@ -93,9 +93,9 @@ SRCS "int_vec.c" DEPS - ::simple_int_mul_c_module_static_c ::simple_int_mul_c_module_static_emitc - model_util::util + ::simple_int_mul_c_module_static_lib + model_util::util_static LINKOPTS "LINKER:--defsym=__stack_size__=20k" COPTS