app_framework.cmake 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. add_definitions (-DWASM_ENABLE_APP_FRAMEWORK=1)
  4. set (APP_FRAMEWORK_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR})
  5. if ( NOT DEFINED APP_FRAMEWORK_INCLUDE_TYPE )
  6. LIST (APPEND WASM_APP_LIB_SOURCE_ALL ${CMAKE_CURRENT_LIST_DIR}/app_ext_lib_export.c)
  7. endif()
  8. # app-native-shared and base are required
  9. include (${APP_FRAMEWORK_ROOT_DIR}/app-native-shared/native_interface.cmake)
  10. LIST (APPEND WASM_APP_SOURCE_ALL ${NATIVE_INTERFACE_SOURCE})
  11. MACRO(SUBDIRLIST result curdir)
  12. FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
  13. SET(dirlist "")
  14. FOREACH(child ${children})
  15. IF(IS_DIRECTORY ${curdir}/${child})
  16. LIST(APPEND dirlist ${child})
  17. ENDIF()
  18. ENDFOREACH()
  19. SET(${result} ${dirlist})
  20. ENDMACRO()
  21. function (add_module_native arg)
  22. message ("Add native module ${ARGV0}")
  23. include (${APP_FRAMEWORK_ROOT_DIR}/${ARGV0}/native/wasm_lib.cmake)
  24. file (GLOB header
  25. ${APP_FRAMEWORK_ROOT_DIR}/${ARGV0}/native/*.h
  26. ${APP_FRAMEWORK_ROOT_DIR}/${ARGV0}/native/*.inl
  27. )
  28. LIST (APPEND WASM_APP_LIBS_DIR ${APP_FRAMEWORK_ROOT_DIR}/${ARGV0}/native)
  29. set (WASM_APP_LIBS_DIR ${WASM_APP_LIBS_DIR} PARENT_SCOPE)
  30. LIST (APPEND RUNTIME_LIB_HEADER_LIST ${header})
  31. set (RUNTIME_LIB_HEADER_LIST ${RUNTIME_LIB_HEADER_LIST} PARENT_SCOPE)
  32. LIST (APPEND WASM_APP_LIB_SOURCE_ALL ${WASM_APP_LIB_CURRENT_SOURCE})
  33. set (WASM_APP_LIB_SOURCE_ALL ${WASM_APP_LIB_SOURCE_ALL} PARENT_SCOPE)
  34. endfunction ()
  35. function (add_module_app arg)
  36. message ("Add app module ${ARGV0}")
  37. include (${APP_FRAMEWORK_ROOT_DIR}/${ARGV0}/app/wasm_app.cmake)
  38. LIST (APPEND WASM_APP_WA_INC_DIR_LIST "${APP_FRAMEWORK_ROOT_DIR}/${ARGV0}/app/wa-inc")
  39. set (WASM_APP_WA_INC_DIR_LIST ${WASM_APP_WA_INC_DIR_LIST} PARENT_SCOPE)
  40. LIST (APPEND WASM_APP_NAME ${ARGV0})
  41. set (WASM_APP_NAME ${WASM_APP_NAME} PARENT_SCOPE)
  42. LIST (APPEND WASM_APP_SOURCE_ALL ${WASM_APP_CURRENT_SOURCE})
  43. set (WASM_APP_SOURCE_ALL ${WASM_APP_SOURCE_ALL} PARENT_SCOPE)
  44. endfunction ()
  45. if ("${WAMR_BUILD_APP_LIST}" STREQUAL "WAMR_APP_BUILD_ALL")
  46. # add all modules under this folder
  47. SUBDIRLIST(SUBDIRS ${APP_FRAMEWORK_ROOT_DIR})
  48. FOREACH(subdir ${SUBDIRS})
  49. if ("${subdir}" STREQUAL "app-native-shared")
  50. continue()
  51. endif ()
  52. if ("${subdir}" STREQUAL "template")
  53. continue()
  54. endif ()
  55. if ( NOT DEFINED APP_FRAMEWORK_INCLUDE_TYPE )
  56. add_module_native (${subdir})
  57. else ()
  58. add_module_app (${subdir})
  59. endif ()
  60. ENDFOREACH()
  61. else ()
  62. # add each module in the list
  63. FOREACH (dir IN LISTS WAMR_BUILD_APP_LIST)
  64. string(REPLACE "WAMR_APP_BUILD_" "" dir ${dir})
  65. string(TOLOWER ${dir} dir)
  66. if ( NOT DEFINED APP_FRAMEWORK_INCLUDE_TYPE )
  67. add_module_native (${dir})
  68. else ()
  69. add_module_app (${dir})
  70. endif ()
  71. ENDFOREACH (dir)
  72. endif()