diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..766f31c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,43 @@ +# @copyright Copyright (c) contributors to Project Ocre, +# which has been established as Project Ocre a Series of LF Projects, LLC +# +# SPDX-License-Identifier: Apache-2.0 + +name: Build Samples + +on: + pull_request: + push: + branches: + - main + workflow_dispatch: + inputs: + devcontainer-tag: + description: "Devcontainer tag" + required: false + default: "latest" + type: string + +concurrency: + group: ${{ github.repository }}-${{ github.workflow }}@build-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + name: Build Samples + runs-on: "ubuntu-22.04" + container: + image: ghcr.io/project-ocre/ocre-runtime/devcontainer-linux:${{ inputs.devcontainer-tag || 'latest'}} + options: --user 1001:127 + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Configure + run: | + mkdir build && cd build + cmake .. + make diff --git a/.gitignore b/.gitignore index 1150372..7de337d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ # Build directories **/build/ +sysroot/ + # VSCode .vscode/* *.code-workspace diff --git a/CMakeLists.txt b/CMakeLists.txt index 1082b56..06a70fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,95 +1,149 @@ cmake_minimum_required (VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk-pthread.cmake) +project(ocre-sdk) set(CMAKE_VERBOSE_MAKEFILE TRUE) -project(OcreSdkSamples) +include(ExternalProject) -# Set the linker flags -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined -Wl,--max-memory=1048576") +make_directory(${CMAKE_CURRENT_BINARY_DIR}/dist) -# Set compilation flags -add_compile_options( - -O0 -Wno-unknown-attributes - -O3 - -Wall - -Wextra - -Wno-unused-parameter +ExternalProject_Add(big-sample + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/big-sample + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp big-sample.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist ) -if(NOT WAMR_ROOT_DIR) - set(WAMR_ROOT_DIR "wasm-micro-runtime") -endif() - -include(${WAMR_ROOT_DIR}/core/iwasm/libraries/lib-socket/lib_socket_wasi.cmake) - -add_subdirectory(ocre-sdk) +ExternalProject_Add(blinky + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/blinky + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp blinky.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -# Create the executable targets -add_executable("hello-world.wasm" generic/hello-world/main.c) +ExternalProject_Add(blinky-board-generic + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/blinky-board-generic + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp blinky-board-generic.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -add_executable("blinky.wasm" generic/blinky/main.c) +ExternalProject_Add(echo-server + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/echo-server + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp echo-server.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -# Include + link the Ocre API and WAMR socket library -target_include_directories("blinky.wasm" PRIVATE - ocre_api +ExternalProject_Add(filesystem + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/filesystem + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp filesystem.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist ) -target_link_libraries("blinky.wasm" ocre_api) +ExternalProject_Add(filesystem-full + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/filesystem-full + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp filesystem-full.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -add_executable("publisher.wasm" generic/messaging/publisher/main.c) +ExternalProject_Add(hello-world + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/hello-world + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp hello-world.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -target_include_directories("publisher.wasm" PRIVATE - ocre_api +ExternalProject_Add(log_mirror_forwarder + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/log_mirror_forwarder + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp syslog_webserver.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist ) -target_link_libraries("publisher.wasm" ocre_api) +ExternalProject_Add(publisher + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/messaging/publisher + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp publisher.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -add_executable("subscriber.wasm" generic/messaging/subscriber/main.c) +ExternalProject_Add(subscriber + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/messaging/subscriber + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp subscriber.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -target_include_directories("subscriber.wasm" PRIVATE - ocre_api +ExternalProject_Add(publisher_inside + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/messaging/multipublisher-subscriber/publisher_inside + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp publisher_inside.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist ) -target_link_libraries("subscriber.wasm" ocre_api) +ExternalProject_Add(publisher_outside + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/messaging/multipublisher-subscriber/publisher_outside + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp publisher_outside.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -add_executable("filesystem.wasm" generic/filesystem/main.c) +ExternalProject_Add(subscriber_temp + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/messaging/multipublisher-subscriber/subscriber_temp + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp subscriber_temp.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -target_include_directories("filesystem.wasm" PRIVATE - ocre_api +ExternalProject_Add(modbus-client + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/modbus-client + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp modbus-client.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist ) -target_link_libraries("filesystem.wasm" ocre_api) +ExternalProject_Add(shared-filesystem-reader + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/shared-filesystem/shared-filesystem-reader + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp shared-filesystem-reader.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -add_executable("filesystem-full.wasm" generic/filesystem-full/main.c) +ExternalProject_Add(shared-filesystem-writer + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/shared-filesystem/shared-filesystem-writer + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp shared-filesystem-writer.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -target_include_directories("filesystem-full.wasm" PRIVATE - ocre_api +ExternalProject_Add(webserver + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/webserver + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp webserver.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist ) -target_link_libraries("filesystem-full.wasm" ocre_api) +ExternalProject_Add(webserver-complex + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/generic/webserver-complex + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp webserver-complex.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -add_executable("webserver.wasm" generic/webserver/main.c generic/webserver/mongoose.c) +# Testing -target_include_directories("webserver.wasm" PRIVATE - ${WAMR_ROOT_DIR}/core/iwasm/libraries/lib-socket - ocre_api +ExternalProject_Add(print_args + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/testing/print_args + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp print_args.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist ) -target_link_libraries("webserver.wasm" socket_wasi_ext ocre_api) - -add_executable("webserver-complex.wasm" generic/webserver-complex/main.c generic/webserver-complex/mongoose.c) +ExternalProject_Add(pthread + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/testing/pthread + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp pthread.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -target_include_directories("webserver-complex.wasm" PRIVATE - ${WAMR_ROOT_DIR}/core/iwasm/libraries/lib-socket - ocre_api +ExternalProject_Add(return0 + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/testing/return0 + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp return0.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist ) -target_link_libraries("webserver-complex.wasm" socket_wasi_ext ocre_api) +ExternalProject_Add(return1 + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/testing/return1 + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp return1.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) -add_executable("return0.wasm" testing/return0.c) -add_executable("return1.wasm" testing/return1.c) -add_executable("sleep_5_return_0.wasm" testing/sleep_5_return_0.c) -add_executable("pthread.wasm" testing/pthread.c) +ExternalProject_Add(sleep5_return0 + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/testing/sleep5_return0 + CMAKE_ARGS "-DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE}" "-DWAMR_ROOT:STRING=${WAMR_ROOT}" + INSTALL_COMMAND cp sleep5_return0.wasm ${CMAKE_CURRENT_BINARY_DIR}/dist +) diff --git a/board_specific/arduino_portenta_h7/blinky-h7/CMakeLists.txt b/board_specific/arduino_portenta_h7/blinky-h7/CMakeLists.txt index f2480f6..56f40aa 100644 --- a/board_specific/arduino_portenta_h7/blinky-h7/CMakeLists.txt +++ b/board_specific/arduino_portenta_h7/blinky-h7/CMakeLists.txt @@ -1,23 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) +cmake_minimum_required (VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../../ocre.cmake) -# Set the project name (needs to come after the toolchain file) -set(APPNAME blinky-h7) -project(${APPNAME}) +project(blinky-h7) -# Set the linker flags -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") +add_executable(blinky-h7.wasm main.c) -# Set compilation flags -add_compile_options( - -O0 -Wno-unknown-attributes - -O3 - -Wall - -Wextra - -Wno-unused-parameter -) +add_subdirectory(../../../ocre-sdk ocre-sdk) -# Create the executable target -add_executable(${APPNAME}.wasm main.c) +target_link_libraries(blinky-h7.wasm + PUBLIC + ocre_api +) diff --git a/board_specific/b_u585i_iot02a/blinky-button/CMakeLists.txt b/board_specific/b_u585i_iot02a/blinky-button/CMakeLists.txt index b46a007..65c40ad 100644 --- a/board_specific/b_u585i_iot02a/blinky-button/CMakeLists.txt +++ b/board_specific/b_u585i_iot02a/blinky-button/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) set(APPNAME blinky-button) project(${APPNAME} LANGUAGES C) diff --git a/board_specific/b_u585i_iot02a/blinky-u585/CMakeLists.txt b/board_specific/b_u585i_iot02a/blinky-u585/CMakeLists.txt index 7b33654..0321382 100644 --- a/board_specific/b_u585i_iot02a/blinky-u585/CMakeLists.txt +++ b/board_specific/b_u585i_iot02a/blinky-u585/CMakeLists.txt @@ -1,25 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME blinky-u585) -project(${APPNAME} LANGUAGES C) +cmake_minimum_required (VERSION 3.20.0) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../../ocre.cmake) + +project(blinky-u585) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +add_executable(blinky-u585.wasm main.c) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_subdirectory(../../../ocre-sdk ocre-sdk) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(blinky-u585.wasm + PUBLIC + ocre_api +) diff --git a/board_specific/b_u585i_iot02a/blinky-xmas/CMakeLists.txt b/board_specific/b_u585i_iot02a/blinky-xmas/CMakeLists.txt index 8e5c6e3..e72b456 100644 --- a/board_specific/b_u585i_iot02a/blinky-xmas/CMakeLists.txt +++ b/board_specific/b_u585i_iot02a/blinky-xmas/CMakeLists.txt @@ -1,25 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME blinky-xmas) -project(${APPNAME} LANGUAGES C) +cmake_minimum_required (VERSION 3.20.0) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../../ocre.cmake) + +project(blinky-xmas) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +add_executable(blinky-xmas.wasm main.c) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_subdirectory(../../../ocre-sdk ocre-sdk) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(blinky-xmas.wasm + PUBLIC + ocre_api +) diff --git a/board_specific/b_u585i_iot02a/modbus-server/CMakeLists.txt b/board_specific/b_u585i_iot02a/modbus-server/CMakeLists.txt index 57d7abd..267d1dd 100644 --- a/board_specific/b_u585i_iot02a/modbus-server/CMakeLists.txt +++ b/board_specific/b_u585i_iot02a/modbus-server/CMakeLists.txt @@ -1,38 +1,15 @@ cmake_minimum_required (VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk-p1.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../../ocre.cmake) -set(CMAKE_BUILD_TYPE Release) +project(modbus-server) -set(APPNAME modbus-server) -project(${APPNAME}) +add_executable(modbus-server.wasm main.c mongoose.c) -# Include the WAMR socket library CMake file (adjust path as needed) -include(../../../wasm-micro-runtime/core/iwasm/libraries/lib-socket/lib_socket_wasi.cmake) +add_subdirectory(../../../ocre-sdk ocre-sdk) -add_compile_options( -# --target=wasm32-wasm-unknown # Target WebAssembly - -Os -Wno-unknown-attributes -) - -# Set compilation flags -add_link_options( - -Wl,--strip-all # Strip all symbol/debug information from the binary - -Wl,--allow-undefined # Let the ocre api functions be undefined - -z stack-size=16384 - -Wl,--initial-memory=65536 # Minimum size of linear memory\ - -Wl,--max-memory=65536 # Maximum size of linear memory -) - -# Add the ocre-sdk as a subdirectory and build it -add_subdirectory(../../../ocre-sdk ocre-sdk-build) - -add_executable(${APPNAME}.wasm main.c mongoose.c) - -# Include + link the Ocre API and WAMR socket library -target_include_directories(${APPNAME}.wasm PRIVATE - ../../../wasm-micro-runtime/core/iwasm/libraries/lib-socket +target_link_libraries(modbus-server.wasm + PUBLIC ocre_api + socket_wasi_ext ) -target_link_libraries(${APPNAME}.wasm socket_wasi_ext ocre_api) diff --git a/board_specific/b_u585i_iot02a/sensor-IMU/CMakeLists.txt b/board_specific/b_u585i_iot02a/sensor-IMU/CMakeLists.txt index 625f9ca..2b8179b 100644 --- a/board_specific/b_u585i_iot02a/sensor-IMU/CMakeLists.txt +++ b/board_specific/b_u585i_iot02a/sensor-IMU/CMakeLists.txt @@ -1,25 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME sensor-imu) -project(${APPNAME} LANGUAGES C) +cmake_minimum_required (VERSION 3.20.0) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../../ocre.cmake) + +project(sensor-imu) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +add_executable(sensor-imu.wasm main.c) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_subdirectory(../../../ocre-sdk ocre-sdk) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(sensor-imu.wasm + PUBLIC + ocre_api +) diff --git a/board_specific/b_u585i_iot02a/sensor/CMakeLists.txt b/board_specific/b_u585i_iot02a/sensor/CMakeLists.txt index 994fcea..36c9521 100644 --- a/board_specific/b_u585i_iot02a/sensor/CMakeLists.txt +++ b/board_specific/b_u585i_iot02a/sensor/CMakeLists.txt @@ -1,25 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME sensor) -project(${APPNAME} LANGUAGES C) +cmake_minimum_required (VERSION 3.20.0) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../../ocre.cmake) + +project(sensor) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +add_executable(sensor.wasm main.c) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_subdirectory(../../../ocre-sdk ocre-sdk) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(sensor.wasm + PUBLIC + ocre_api +) diff --git a/generic/big-sample/CMakeLists.txt b/generic/big-sample/CMakeLists.txt index cc147dc..86de480 100644 --- a/generic/big-sample/CMakeLists.txt +++ b/generic/big-sample/CMakeLists.txt @@ -1,23 +1,7 @@ cmake_minimum_required(VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) -# Set the project name (needs to come after the toolchain file) -set(APPNAME big-sample) -project(${APPNAME}) +project(big-sample) -# Set the linker flags -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") - -# Set compilation flags -add_compile_options( - -O0 -Wno-unknown-attributes - -O3 - -Wall - -Wextra - -Wno-unused-parameter -) - -# Create the executable target -add_executable(${APPNAME}.wasm main.c) +add_executable(big-sample.wasm main.c) diff --git a/generic/blinky-board-generic/CMakeLists.txt b/generic/blinky-board-generic/CMakeLists.txt index 6e366d8..b892865 100644 --- a/generic/blinky-board-generic/CMakeLists.txt +++ b/generic/blinky-board-generic/CMakeLists.txt @@ -1,25 +1,14 @@ cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME blinky-board-generic) -project(${APPNAME} LANGUAGES C) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) + +add_subdirectory(../../ocre-sdk ocre-sdk) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +project(blinky-board-generic) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_executable(blinky-board-generic.wasm main.c) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(blinky-board-generic.wasm + PUBLIC + ocre_api +) diff --git a/generic/blinky/CMakeLists.txt b/generic/blinky/CMakeLists.txt index dcadc1d..b2ec9b3 100644 --- a/generic/blinky/CMakeLists.txt +++ b/generic/blinky/CMakeLists.txt @@ -1,25 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME blinky) -project(${APPNAME} LANGUAGES C) +cmake_minimum_required (VERSION 3.20.0) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) + +project(blinky) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +add_executable(blinky.wasm main.c) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_subdirectory(../../ocre-sdk ocre-sdk) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(blinky.wasm + PUBLIC + ocre_api +) diff --git a/generic/echo-server/CMakeLists.txt b/generic/echo-server/CMakeLists.txt index b289159..d13f9a5 100644 --- a/generic/echo-server/CMakeLists.txt +++ b/generic/echo-server/CMakeLists.txt @@ -1,23 +1,14 @@ cmake_minimum_required(VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk-p1.cmake) -set(CMAKE_BUILD_TYPE Release) -set(APPNAME echo-server) -project(${APPNAME}) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) -# Include the WAMR socket library CMake file (adjust path as needed) -include(../../wasm-micro-runtime/core/iwasm/libraries/lib-socket/lib_socket_wasi.cmake) +add_subdirectory(../../ocre-sdk ocre-sdk) -add_compile_options( - -O0 -Wno-unknown-attributes -) -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--allow-undefined -z stack-size=4096") -add_link_options( - -Wl,--strip-all # Strip all symbol/debug information from the binary -) -add_executable(${APPNAME}.wasm src/main.c) -target_include_directories(${APPNAME}.wasm PRIVATE - ../../wasm-micro-runtime/core/iwasm/libraries/lib-socket +project(echo-server) + +add_executable(echo-server.wasm src/main.c) + +target_link_libraries(echo-server.wasm + PUBLIC + socket_wasi_ext ) -target_link_libraries(${APPNAME}.wasm socket_wasi_ext) diff --git a/generic/filesystem-full/CMakeLists.txt b/generic/filesystem-full/CMakeLists.txt index aa5af08..05c3aa9 100644 --- a/generic/filesystem-full/CMakeLists.txt +++ b/generic/filesystem-full/CMakeLists.txt @@ -1,30 +1,22 @@ cmake_minimum_required (VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk-p1.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) -set(CMAKE_BUILD_TYPE Release) +project(filesystem-full) -set(APPNAME filesystem-full) -project(${APPNAME}) +set(CMAKE_BUILD_TYPE Release) -# When compiling with no stdlib -# add_compile_options( -# --target=wasm32-wasm-unknown -# -nostdlib -# ) +add_executable(filesystem-full.wasm main.c) -add_compile_options( - -Os +target_compile_options(filesystem-full.wasm + PRIVATE + -Os -Wno-unknown-attributes ) -add_link_options( - -Wl,--strip-all # Strip all symbol/debug information from the binary - -Wl,--allow-undefined # Let the ocre api functions be undefined - -z stack-size=1024 # Probably larger than needed - optimize - -Wl,--initial-memory=65536 # Minimum size of linear memory\ +target_link_options(filesystem-full.wasm + PRIVATE + -z stack-size=1024 # Probably larger than needed + -Wl,--initial-memory=65536 # Minimum size of linear memory -Wl,--max-memory=65536 # Maximum size of linear memory ) - -add_executable(${APPNAME}.wasm main.c) diff --git a/generic/filesystem/CMakeLists.txt b/generic/filesystem/CMakeLists.txt index 4c86f61..9a87c2e 100644 --- a/generic/filesystem/CMakeLists.txt +++ b/generic/filesystem/CMakeLists.txt @@ -1,30 +1,7 @@ cmake_minimum_required (VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk-p1.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) -set(CMAKE_BUILD_TYPE Release) +project(filesystem) -set(APPNAME filesystem) -project(${APPNAME}) - -# When compiling with no stdlib -# add_compile_options( -# --target=wasm32-wasm-unknown -# -nostdlib -# ) - -add_compile_options( - -Os - -Wno-unknown-attributes -) - -add_link_options( - -Wl,--strip-all # Strip all symbol/debug information from the binary - -Wl,--allow-undefined # Let the ocre api functions be undefined - -z stack-size=1024 # Probably larger than needed - optimize - -Wl,--initial-memory=65536 # Minimum size of linear memory\ - -Wl,--max-memory=65536 # Maximum size of linear memory -) - -add_executable(${APPNAME}.wasm main.c) +add_executable(filesystem.wasm main.c) diff --git a/generic/hello-world/CMakeLists.txt b/generic/hello-world/CMakeLists.txt index d6736ab..96456b3 100644 --- a/generic/hello-world/CMakeLists.txt +++ b/generic/hello-world/CMakeLists.txt @@ -1,23 +1,7 @@ cmake_minimum_required(VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) -# Set the project name (needs to come after the toolchain file) -set(APPNAME hello-world) -project(${APPNAME}) +project(hello-world) -# Set the linker flags -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") - -# Set compilation flags -add_compile_options( - -O0 -Wno-unknown-attributes - -O3 - -Wall - -Wextra - -Wno-unused-parameter -) - -# Create the executable target -add_executable(${APPNAME}.wasm main.c) \ No newline at end of file +add_executable(hello-world.wasm main.c) diff --git a/generic/hello-world/main.c b/generic/hello-world/main.c index 01adcdb..41bcdb7 100644 --- a/generic/hello-world/main.c +++ b/generic/hello-world/main.c @@ -5,17 +5,17 @@ * SPDX-License-Identifier: Apache-2.0 */ - + #include // Application entry point int main() -{ +{ printf("\n\ _ _________ ___ ______________ ______ ____ __ \n\ | | /| / / __/ _ )/ _ | / __/ __/ __/ |/ / _ )/ /\\ \\/ / \n\ | |/ |/ / _// _ / __ |_\\ \\_\\ \\/ _// /|_/ / _ / /__\\ / \n\ |__/|__/___/____/_/ |_/___/___/___/_/ /_/____/____//_/ \n\ - powered by Ocre "); + powered by Ocre \n"); return 0; } diff --git a/generic/log_mirror_forwarder/CMakeLists.txt b/generic/log_mirror_forwarder/CMakeLists.txt index 9aba13d..2a70f00 100644 --- a/generic/log_mirror_forwarder/CMakeLists.txt +++ b/generic/log_mirror_forwarder/CMakeLists.txt @@ -1,41 +1,29 @@ -cmake_minimum_required (VERSION 3.20.0) +cmake_minimum_required(VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk-pthread.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) -set(CMAKE_BUILD_TYPE Release) +add_subdirectory(../../ocre-sdk ocre-sdk) + +project(syslog_webserver) -set(APPNAME syslog_webserver) -project(${APPNAME}) +set(CMAKE_BUILD_TYPE Release) -# Include the WAMR socket library CMake file (adjust path as needed) -include(../../wasm-micro-runtime/core/iwasm/libraries/lib-socket/lib_socket_wasi.cmake) +add_executable(syslog_webserver.wasm + main.c + mongoose.c +) -add_compile_options( -# --target=wasm32-wasm-unknown # Target WebAssembly +target_compile_options(syslog_webserver.wasm + PRIVATE -Os -Wno-unknown-attributes -D_WASI_EMULATED_PTHREAD ) - -# Set compilation flags -add_link_options( - -Wl,--strip-all # Strip all symbol/debug information from the binary - -Wl,--allow-undefined # Let the ocre api functions be undefined +target_link_options(syslog_webserver.wasm + PRIVATE -z stack-size=8192 ) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) - -add_executable(${APPNAME}.wasm main.c mongoose.c) - -# Include + link the Ocre API and WAMR socket library -target_include_directories(${APPNAME}.wasm PRIVATE - ../../wasm-micro-runtime/core/iwasm/libraries/lib-socket +target_link_libraries(syslog_webserver.wasm + socket_wasi_ext ocre_api ) -target_link_libraries(${APPNAME}.wasm socket_wasi_ext ocre_api) diff --git a/generic/messaging/multipublisher-subscriber/publisher_inside/CMakeLists.txt b/generic/messaging/multipublisher-subscriber/publisher_inside/CMakeLists.txt index e6365cf..055899a 100644 --- a/generic/messaging/multipublisher-subscriber/publisher_inside/CMakeLists.txt +++ b/generic/messaging/multipublisher-subscriber/publisher_inside/CMakeLists.txt @@ -1,25 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME publisher_inside) -project(${APPNAME} LANGUAGES C) +cmake_minimum_required (VERSION 3.20.0) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../../../ocre.cmake) + +add_subdirectory(../../../../ocre-sdk ocre-sdk) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +project(publisher_inside) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_executable(publisher_inside.wasm main.c) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(publisher_inside.wasm + PUBLIC + ocre_api +) diff --git a/generic/messaging/multipublisher-subscriber/publisher_outside/CMakeLists.txt b/generic/messaging/multipublisher-subscriber/publisher_outside/CMakeLists.txt index a55e8d5..c23c20f 100644 --- a/generic/messaging/multipublisher-subscriber/publisher_outside/CMakeLists.txt +++ b/generic/messaging/multipublisher-subscriber/publisher_outside/CMakeLists.txt @@ -1,25 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME publisher_outside) -project(${APPNAME} LANGUAGES C) +cmake_minimum_required (VERSION 3.20.0) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../../../ocre.cmake) + +add_subdirectory(../../../../ocre-sdk ocre-sdk) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +project(publisher_outside) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_executable(publisher_outside.wasm main.c) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(publisher_outside.wasm + PUBLIC + ocre_api +) diff --git a/generic/messaging/multipublisher-subscriber/subscriber_temp/CMakeLists.txt b/generic/messaging/multipublisher-subscriber/subscriber_temp/CMakeLists.txt index 24421d7..6fdfacb 100644 --- a/generic/messaging/multipublisher-subscriber/subscriber_temp/CMakeLists.txt +++ b/generic/messaging/multipublisher-subscriber/subscriber_temp/CMakeLists.txt @@ -1,25 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME subscriber_temp) -project(${APPNAME} LANGUAGES C) +cmake_minimum_required (VERSION 3.20.0) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../../../ocre.cmake) + +add_subdirectory(../../../../ocre-sdk ocre-sdk) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +project(subscriber_temp) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_executable(subscriber_temp.wasm main.c) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(subscriber_temp.wasm + PUBLIC + ocre_api +) diff --git a/generic/messaging/publisher/CMakeLists.txt b/generic/messaging/publisher/CMakeLists.txt index 70fcbbf..fb6bb0d 100644 --- a/generic/messaging/publisher/CMakeLists.txt +++ b/generic/messaging/publisher/CMakeLists.txt @@ -1,25 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME publisher) -project(${APPNAME} LANGUAGES C) +cmake_minimum_required (VERSION 3.20.0) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../../ocre.cmake) + +add_subdirectory(../../../ocre-sdk ocre-sdk) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +project(publisher) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_executable(publisher.wasm main.c) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(publisher.wasm + PUBLIC + ocre_api +) diff --git a/generic/messaging/subscriber/CMakeLists.txt b/generic/messaging/subscriber/CMakeLists.txt index 7845d99..4a66910 100644 --- a/generic/messaging/subscriber/CMakeLists.txt +++ b/generic/messaging/subscriber/CMakeLists.txt @@ -1,25 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME subscriber) -project(${APPNAME} LANGUAGES C) +cmake_minimum_required (VERSION 3.20.0) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../../ocre.cmake) + +add_subdirectory(../../../ocre-sdk ocre-sdk) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +project(subscriber) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_executable(subscriber.wasm main.c) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(subscriber.wasm + PUBLIC + ocre_api +) diff --git a/generic/modbus-client/CMakeLists.txt b/generic/modbus-client/CMakeLists.txt index b30938b..ecef426 100644 --- a/generic/modbus-client/CMakeLists.txt +++ b/generic/modbus-client/CMakeLists.txt @@ -1,42 +1,28 @@ -cmake_minimum_required (VERSION 3.20.0) +cmake_minimum_required(VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk-p1.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) -set(CMAKE_BUILD_TYPE Release) +add_subdirectory(../../ocre-sdk ocre-sdk) + +project(modbus-client) -set(APPNAME modbus-client) -project(${APPNAME}) +set(CMAKE_BUILD_TYPE Release) -# Include the WAMR socket library CMake file (adjust path as needed) -include(../../wasm-micro-runtime/core/iwasm/libraries/lib-socket/lib_socket_wasi.cmake) +add_executable(modbus-client.wasm main.c mongoose.c) -add_compile_options( -# --target=wasm32-wasm-unknown # Target WebAssembly +target_compile_options(modbus-client.wasm + PRIVATE -Os -Wno-unknown-attributes ) -# Set compilation flags -add_link_options( - -Wl,--strip-all # Strip all symbol/debug information from the binary - -Wl,--allow-undefined # Let the ocre api functions be undefined +target_link_options(modbus-client.wasm + PRIVATE -z stack-size=16384 - -Wl,--initial-memory=65536 # Minimum size of linear memory\ + -Wl,--initial-memory=65536 # Minimum size of linear memory -Wl,--max-memory=65536 # Maximum size of linear memory ) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) - -add_executable(${APPNAME}.wasm main.c mongoose.c) - -# Include + link the Ocre API and WAMR socket library -target_include_directories(${APPNAME}.wasm PRIVATE - ../../wasm-micro-runtime/core/iwasm/libraries/lib-socket +target_link_libraries(modbus-client.wasm + socket_wasi_ext ocre_api ) -target_link_libraries(${APPNAME}.wasm socket_wasi_ext ocre_api) diff --git a/generic/sensor-rng/CMakeLists.txt b/generic/sensor-rng/CMakeLists.txt index edce8d3..6ef1d9a 100644 --- a/generic/sensor-rng/CMakeLists.txt +++ b/generic/sensor-rng/CMakeLists.txt @@ -1,25 +1,14 @@ -cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -set(APPNAME sensor-rng) -project(${APPNAME} LANGUAGES C) +cmake_minimum_required (VERSION 3.20.0) -set(CMAKE_EXE_LINKER_FLAGS "-Wl,--strip-all -Wl,--allow-undefined") -add_compile_options( - -O3 - -Wall - -Wextra - -Wno-unused-parameter - -Wno-unknown-attributes -) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) + +add_subdirectory(../../ocre-sdk ocre-sdk) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() +project(sensor-rng) -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) +add_executable(sensor-rng.wasm main.c) -add_executable(${APPNAME}.wasm main.c) -target_include_directories(${APPNAME}.wasm PRIVATE ocre_api) -target_link_libraries(${APPNAME}.wasm PRIVATE ocre_api) +target_link_libraries(sensor-rng.wasm + PUBLIC + ocre_api +) diff --git a/generic/shared-filesystem/shared-filesystem-reader/CMakeLists.txt b/generic/shared-filesystem/shared-filesystem-reader/CMakeLists.txt index 945a3d3..3fc0125 100644 --- a/generic/shared-filesystem/shared-filesystem-reader/CMakeLists.txt +++ b/generic/shared-filesystem/shared-filesystem-reader/CMakeLists.txt @@ -1,30 +1,9 @@ cmake_minimum_required (VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk-p1.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../../ocre.cmake) -set(CMAKE_BUILD_TYPE Release) +add_subdirectory(../../../ocre-sdk ocre-sdk) -set(APPNAME shared-filesystem-reader) -project(${APPNAME}) +project(shared-filesystem-reader) -# When compiling with no stdlib -# add_compile_options( -# --target=wasm32-wasm-unknown -# -nostdlib -# ) - -add_compile_options( - -Os - -Wno-unknown-attributes -) - -add_link_options( - -Wl,--strip-all # Strip all symbol/debug information from the binary - -Wl,--allow-undefined # Let the ocre api functions be undefined - -z stack-size=1024 # Probably larger than needed - optimize - -Wl,--initial-memory=65536 # Minimum size of linear memory\ - -Wl,--max-memory=65536 # Maximum size of linear memory -) - -add_executable(${APPNAME}.wasm main.c) \ No newline at end of file +add_executable(shared-filesystem-reader.wasm main.c) diff --git a/generic/shared-filesystem/shared-filesystem-writer/CMakeLists.txt b/generic/shared-filesystem/shared-filesystem-writer/CMakeLists.txt index b4a5161..f8e7911 100644 --- a/generic/shared-filesystem/shared-filesystem-writer/CMakeLists.txt +++ b/generic/shared-filesystem/shared-filesystem-writer/CMakeLists.txt @@ -1,30 +1,9 @@ cmake_minimum_required (VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk-p1.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../../ocre.cmake) -set(CMAKE_BUILD_TYPE Release) +add_subdirectory(../../../ocre-sdk ocre-sdk) -set(APPNAME shared-filesystem-writer) -project(${APPNAME}) +project(shared-filesystem-writer) -# When compiling with no stdlib -# add_compile_options( -# --target=wasm32-wasm-unknown -# -nostdlib -# ) - -add_compile_options( - -Os - -Wno-unknown-attributes -) - -add_link_options( - -Wl,--strip-all # Strip all symbol/debug information from the binary - -Wl,--allow-undefined # Let the ocre api functions be undefined - -z stack-size=1024 # Probably larger than needed - optimize - -Wl,--initial-memory=65536 # Minimum size of linear memory\ - -Wl,--max-memory=65536 # Maximum size of linear memory -) - -add_executable(${APPNAME}.wasm main.c) +add_executable(shared-filesystem-writer.wasm main.c) diff --git a/generic/webserver-complex/CMakeLists.txt b/generic/webserver-complex/CMakeLists.txt index c0b8b07..349d5af 100644 --- a/generic/webserver-complex/CMakeLists.txt +++ b/generic/webserver-complex/CMakeLists.txt @@ -1,42 +1,31 @@ -cmake_minimum_required (VERSION 3.20.0) +cmake_minimum_required(VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk-p1.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) -set(CMAKE_BUILD_TYPE Release) +add_subdirectory(../../ocre-sdk ocre-sdk) -set(APPNAME webserver-complex) -project(${APPNAME}) +project(webserver-complex) -# Include the WAMR socket library CMake file (adjust path as needed) -include(../../wasm-micro-runtime/core/iwasm/libraries/lib-socket/lib_socket_wasi.cmake) +set(CMAKE_BUILD_TYPE Release) -add_compile_options( -# --target=wasm32-wasm-unknown # Target WebAssembly - -Os -Wno-unknown-attributes +add_executable(webserver-complex.wasm + main.c + mongoose.c ) -# Set compilation flags -add_link_options( - -Wl,--strip-all # Strip all symbol/debug information from the binary - -Wl,--allow-undefined # Let the ocre api functions be undefined +target_compile_options(webserver-complex.wasm + PRIVATE + -Os -Wno-unknown-attributes + -D_WASI_EMULATED_PTHREAD +) +target_link_options(webserver-complex.wasm + PRIVATE -z stack-size=8192 - -Wl,--initial-memory=65536 # Minimum size of linear memory\ + -Wl,--initial-memory=65536 # Minimum size of linear memory -Wl,--max-memory=65536 # Maximum size of linear memory ) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) - -add_executable(${APPNAME}.wasm main.c mongoose.c) - -# Include + link the Ocre API and WAMR socket library -target_include_directories(${APPNAME}.wasm PRIVATE - ../../wasm-micro-runtime/core/iwasm/libraries/lib-socket +target_link_libraries(webserver-complex.wasm + socket_wasi_ext ocre_api ) -target_link_libraries(${APPNAME}.wasm socket_wasi_ext ocre_api) diff --git a/generic/webserver/CMakeLists.txt b/generic/webserver/CMakeLists.txt index 820c60f..cf33dba 100644 --- a/generic/webserver/CMakeLists.txt +++ b/generic/webserver/CMakeLists.txt @@ -1,42 +1,31 @@ -cmake_minimum_required (VERSION 3.20.0) +cmake_minimum_required(VERSION 3.20.0) -# Set the WASI SDK toolchain file -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk-p1.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) -set(CMAKE_BUILD_TYPE Release) +add_subdirectory(../../ocre-sdk ocre-sdk) -set(APPNAME webserver) -project(${APPNAME}) +project(webserver) -# Include the WAMR socket library CMake file (adjust path as needed) -include(../../wasm-micro-runtime/core/iwasm/libraries/lib-socket/lib_socket_wasi.cmake) +set(CMAKE_BUILD_TYPE Release) -add_compile_options( -# --target=wasm32-wasm-unknown # Target WebAssembly - -Os -Wno-unknown-attributes +add_executable(webserver.wasm + main.c + mongoose.c ) -# Set compilation flags -add_link_options( - -Wl,--strip-all # Strip all symbol/debug information from the binary - -Wl,--allow-undefined # Let the ocre api functions be undefined +target_compile_options(webserver.wasm + PRIVATE + -Os -Wno-unknown-attributes + -D_WASI_EMULATED_PTHREAD +) +target_link_options(webserver.wasm + PRIVATE -z stack-size=8192 - -Wl,--initial-memory=65536 # Minimum size of linear memory\ + -Wl,--initial-memory=65536 # Minimum size of linear memory -Wl,--max-memory=65536 # Maximum size of linear memory ) -# Add the ocre-sdk as a subdirectory and build it -set(OCRE_SDK_PATH "../../ocre-sdk") -if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${OCRE_SDK_PATH}/CMakeLists.txt") - message(FATAL_ERROR "ocre-sdk not found at ${OCRE_SDK_PATH}. Please ensure the ocre-sdk directory exists and contains CMakeLists.txt") -endif() -add_subdirectory(${OCRE_SDK_PATH} ocre-sdk-build) - -add_executable(${APPNAME}.wasm main.c mongoose.c) - -# Include + link the Ocre API and WAMR socket library -target_include_directories(${APPNAME}.wasm PRIVATE - ../../wasm-micro-runtime/core/iwasm/libraries/lib-socket +target_link_libraries(webserver.wasm + socket_wasi_ext ocre_api ) -target_link_libraries(${APPNAME}.wasm socket_wasi_ext ocre_api) diff --git a/ocre-sdk/CMakeLists.txt b/ocre-sdk/CMakeLists.txt index dfbb8e8..4a6c2d5 100644 --- a/ocre-sdk/CMakeLists.txt +++ b/ocre-sdk/CMakeLists.txt @@ -1,9 +1,19 @@ cmake_minimum_required(VERSION 3.20.0) -set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) -project(ocre_api LANGUAGES C) +project(ocre-sdk) + +set(CMAKE_VERBOSE_MAKEFILE TRUE) + +if (NOT WAMR_ROOT) + set(WAMR_ROOT "${CMAKE_CURRENT_LIST_DIR}/../wasm-micro-runtime") +endif() + +message(STATUS "Using WAMR ROOT: ${WAMR_ROOT}") + +# WAMR Sockets lib +add_library(socket_wasi_ext STATIC ${WAMR_ROOT}/core/iwasm/libraries/lib-socket/src/wasi/wasi_socket_ext.c) +target_include_directories(socket_wasi_ext PUBLIC ${WAMR_ROOT}/core/iwasm/libraries/lib-socket/inc) + +# Ocre API add_library(ocre_api STATIC ocre_api.c) -target_include_directories(ocre_api PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_compile_options(ocre_api PRIVATE -O3 -Wall -Wextra -Wno-unused-parameter -Wno-unknown-attributes) -install(TARGETS ocre_api ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin) -install(FILES ocre_api.h DESTINATION include) \ No newline at end of file +target_include_directories(ocre_api PUBLIC ${CMAKE_CURRENT_LIST_DIR}) diff --git a/ocre.cmake b/ocre.cmake new file mode 100644 index 0000000..8efb980 --- /dev/null +++ b/ocre.cmake @@ -0,0 +1,3 @@ +set(CMAKE_TOOLCHAIN_FILE /opt/wasi-sdk/share/cmake/wasi-sdk.cmake) + +set(CMAKE_EXE_LINKER_FLAGS "-Wl,--import-memory -Wl,--export-memory -Wl,--strip-all -Wl,--allow-undefined -Wl,--max-memory=4194304") diff --git a/testing/print_args/CMakeLists.txt b/testing/print_args/CMakeLists.txt new file mode 100644 index 0000000..f70afc4 --- /dev/null +++ b/testing/print_args/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.20.0) + +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) + +project(print_args) + +add_executable(print_args.wasm main.c) diff --git a/testing/print_args.c b/testing/print_args/main.c similarity index 100% rename from testing/print_args.c rename to testing/print_args/main.c diff --git a/testing/pthread/CMakeLists.txt b/testing/pthread/CMakeLists.txt new file mode 100644 index 0000000..d8253d9 --- /dev/null +++ b/testing/pthread/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.20.0) + +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) + +project(pthread) + +add_executable(pthread.wasm main.c) diff --git a/testing/pthread.c b/testing/pthread/main.c similarity index 100% rename from testing/pthread.c rename to testing/pthread/main.c diff --git a/testing/return0/CMakeLists.txt b/testing/return0/CMakeLists.txt new file mode 100644 index 0000000..938a2d1 --- /dev/null +++ b/testing/return0/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.20.0) + +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) + +project(return0) + +add_executable(return0.wasm main.c) diff --git a/testing/return0.c b/testing/return0/main.c similarity index 100% rename from testing/return0.c rename to testing/return0/main.c diff --git a/testing/return1/CMakeLists.txt b/testing/return1/CMakeLists.txt new file mode 100644 index 0000000..1a0cf29 --- /dev/null +++ b/testing/return1/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.20.0) + +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) + +project(return1) + +add_executable(return1.wasm main.c) diff --git a/testing/return1.c b/testing/return1/main.c similarity index 100% rename from testing/return1.c rename to testing/return1/main.c diff --git a/testing/sleep5_return0/CMakeLists.txt b/testing/sleep5_return0/CMakeLists.txt new file mode 100644 index 0000000..ec0286d --- /dev/null +++ b/testing/sleep5_return0/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.20.0) + +include(${CMAKE_CURRENT_LIST_DIR}/../../ocre.cmake) + +project(sleep5_return0) + +add_executable(sleep5_return0.wasm main.c) diff --git a/testing/sleep_5_return_0.c b/testing/sleep5_return0/main.c similarity index 100% rename from testing/sleep_5_return_0.c rename to testing/sleep5_return0/main.c