app_framework.cmake 2.8 KB

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