app_framework.cmake 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 RUNTIME_LIB_HEADER_LIST ${header})
  29. set (RUNTIME_LIB_HEADER_LIST ${RUNTIME_LIB_HEADER_LIST} PARENT_SCOPE)
  30. LIST (APPEND WASM_APP_LIB_SOURCE_ALL ${WASM_APP_LIB_CURRENT_SOURCE})
  31. set (WASM_APP_LIB_SOURCE_ALL ${WASM_APP_LIB_SOURCE_ALL} PARENT_SCOPE)
  32. endfunction ()
  33. function (add_module_app arg)
  34. message ("Add app module ${ARGV0}")
  35. include (${APP_FRAMEWORK_ROOT_DIR}/${ARGV0}/app/wasm_app.cmake)
  36. LIST (APPEND WASM_APP_WA_INC_DIR_LIST "${APP_FRAMEWORK_ROOT_DIR}/${ARGV0}/app/wa-inc")
  37. set (WASM_APP_WA_INC_DIR_LIST ${WASM_APP_WA_INC_DIR_LIST} PARENT_SCOPE)
  38. LIST (APPEND WASM_APP_NAME ${ARGV0})
  39. set (WASM_APP_NAME ${WASM_APP_NAME} PARENT_SCOPE)
  40. LIST (APPEND WASM_APP_SOURCE_ALL ${WASM_APP_CURRENT_SOURCE})
  41. set (WASM_APP_SOURCE_ALL ${WASM_APP_SOURCE_ALL} PARENT_SCOPE)
  42. endfunction ()
  43. if ("${WAMR_BUILD_APP_LIST}" STREQUAL "WAMR_APP_BUILD_ALL")
  44. # add all modules under this folder
  45. SUBDIRLIST(SUBDIRS ${APP_FRAMEWORK_ROOT_DIR})
  46. FOREACH(subdir ${SUBDIRS})
  47. if ("${subdir}" STREQUAL "app-native-shared")
  48. continue()
  49. endif ()
  50. if ("${subdir}" STREQUAL "template")
  51. continue()
  52. endif ()
  53. if ( NOT DEFINED APP_FRAMEWORK_INCLUDE_TYPE )
  54. add_module_native (${subdir})
  55. else ()
  56. add_module_app (${subdir})
  57. endif ()
  58. ENDFOREACH()
  59. else ()
  60. # add each module in the list
  61. FOREACH (dir IN LISTS WAMR_BUILD_APP_LIST)
  62. string(REPLACE "WAMR_APP_BUILD_" "" dir ${dir})
  63. string(TOLOWER ${dir} dir)
  64. if ( NOT DEFINED APP_FRAMEWORK_INCLUDE_TYPE )
  65. add_module_native (${dir})
  66. else ()
  67. add_module_app (${dir})
  68. endif ()
  69. ENDFOREACH (dir)
  70. endif()