From 685f75234b3669c6d07ae6ff5f659e36b11edc14 Mon Sep 17 00:00:00 2001 From: Florent Date: Sun, 24 Aug 2025 13:06:19 +0200 Subject: [PATCH 1/3] let users compile their projects against meshcore as a lib --- build_as_lib.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ library.json | 16 +++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 build_as_lib.py create mode 100644 library.json diff --git a/build_as_lib.py b/build_as_lib.py new file mode 100644 index 00000000..93593cdb --- /dev/null +++ b/build_as_lib.py @@ -0,0 +1,53 @@ +from os.path import join, realpath, exists +import shutil, os + +Import("env") + +platform_stm32=False +platform_esp32=False +platform_nrf52=False +platform_rp2040=False + +src_filter = [] +src_filter.append("+<*>") +src_filter.append("-") # don't build with ui for now ... + +for item in env.get("CPPDEFINES", []): + if isinstance(item, str) and item == "STM32_PLATFORM": + # add STM32 specific sources + env.Append(CPPPATH=[realpath("src/helpers/stm32")]) + platform_stm32=True + env.Append(BUILD_FLAGS=["-I src/helpers/stm32"]) + elif isinstance(item, str) and item == "ESP32": + platform_esp32=True + env.Append(CPPPATH=[realpath("src/helpers/esp32")]) + env.Append(BUILD_FLAGS=["-I src/helpers/esp32"]) + elif isinstance(item, str) and item == "WIO_E5_DEV_VARIANT": + env.Append(BUILD_FLAGS=["-I variants/wio-e5-dev"]) + src_filter.append("+<../variants/wio-e5-dev>") + elif isinstance(item, str) and item == "RAK_3X72_VARIANT": + env.Append(BUILD_FLAGS=["-I variants/rak3x72"]) + src_filter.append("+<../variants/rak3x72>") + elif isinstance(item, str) and item == "XIAO_S3_WIO_VARIANT": + env.Append(BUILD_FLAGS=["-I variants/xiao_s3_wio"]) + src_filter.append("+<../variants/xiao_s3_wio>") + elif isinstance(item, str) and item == "XIAO_C6_VARIANT": + env.Append(BUILD_FLAGS=["-I variants/xiao_c6"]) + src_filter.append("+<../variants/xiao_c6>") + elif isinstance(item, str) and item == "GENERIC_ESPNOW_VARIANT": + env.Append(BUILD_FLAGS=["-I variants/generic_espnow"]) + src_filter.append("+<../variants/generic_espnow>") + src_filter.append("+") + +if not platform_stm32: + src_filter.append("-") +if not platform_esp32: + src_filter.append("-") +if not platform_nrf52: + src_filter.append("-") +if not platform_rp2040: + src_filter.append("-") + +env.Replace(SRC_FILTER=src_filter) + +print (env.Dump()) diff --git a/library.json b/library.json new file mode 100644 index 00000000..982983a3 --- /dev/null +++ b/library.json @@ -0,0 +1,16 @@ +{ + "name": "MeshCore", + "version" : "1.7.4", + "dependencies": { + "SPI": "*", + "Wire": "*", + "jgromes/RadioLib": "^7.1.2", + "rweather/Crypto": "^0.4.0", + "adafruit/RTClib": "^2.1.3", + "melopero/Melopero RV3028": "^1.1.0", + "electroniccats/CayenneLPP": "1.4.0" + }, + "build": { + "extraScript": "build_as_lib.py" + } +} \ No newline at end of file From 228bac0add4f3cf175fee950a7e9b76ff006a7b6 Mon Sep 17 00:00:00 2001 From: Florent Date: Sun, 24 Aug 2025 13:09:55 +0200 Subject: [PATCH 2/3] simplify src_filter creation --- build_as_lib.py | 67 ++++++++++++++++--------------------------------- 1 file changed, 22 insertions(+), 45 deletions(-) diff --git a/build_as_lib.py b/build_as_lib.py index 93593cdb..f3410625 100644 --- a/build_as_lib.py +++ b/build_as_lib.py @@ -1,53 +1,30 @@ -from os.path import join, realpath, exists -import shutil, os +from os.path import realpath -Import("env") +Import("env") # type: ignore +menv=env # type: ignore -platform_stm32=False -platform_esp32=False -platform_nrf52=False -platform_rp2040=False +src_filter = [ + '+<*.cpp>', + '+', + '+', + '+', +] -src_filter = [] -src_filter.append("+<*>") -src_filter.append("-") # don't build with ui for now ... - -for item in env.get("CPPDEFINES", []): +for item in menv.get("CPPDEFINES", []): if isinstance(item, str) and item == "STM32_PLATFORM": # add STM32 specific sources - env.Append(CPPPATH=[realpath("src/helpers/stm32")]) - platform_stm32=True - env.Append(BUILD_FLAGS=["-I src/helpers/stm32"]) + menv.Append(CPPPATH=[realpath("src/helpers/stm32")]) + menv.Append(BUILD_FLAGS=["-I src/helpers/stm32"]) + src_filter.append("+") elif isinstance(item, str) and item == "ESP32": - platform_esp32=True - env.Append(CPPPATH=[realpath("src/helpers/esp32")]) - env.Append(BUILD_FLAGS=["-I src/helpers/esp32"]) - elif isinstance(item, str) and item == "WIO_E5_DEV_VARIANT": - env.Append(BUILD_FLAGS=["-I variants/wio-e5-dev"]) - src_filter.append("+<../variants/wio-e5-dev>") - elif isinstance(item, str) and item == "RAK_3X72_VARIANT": - env.Append(BUILD_FLAGS=["-I variants/rak3x72"]) - src_filter.append("+<../variants/rak3x72>") - elif isinstance(item, str) and item == "XIAO_S3_WIO_VARIANT": - env.Append(BUILD_FLAGS=["-I variants/xiao_s3_wio"]) - src_filter.append("+<../variants/xiao_s3_wio>") - elif isinstance(item, str) and item == "XIAO_C6_VARIANT": - env.Append(BUILD_FLAGS=["-I variants/xiao_c6"]) - src_filter.append("+<../variants/xiao_c6>") - elif isinstance(item, str) and item == "GENERIC_ESPNOW_VARIANT": - env.Append(BUILD_FLAGS=["-I variants/generic_espnow"]) - src_filter.append("+<../variants/generic_espnow>") - src_filter.append("+") + menv.Append(CPPPATH=[realpath("src/helpers/esp32")]) + menv.Append(BUILD_FLAGS=["-I src/helpers/esp32"]) + src_filter.append("+") + elif isinstance(item, tuple) and item[0] == "MC_VARIANT": + variant_name = item[1] + menv.Append(BUILD_FLAGS=[f"-I variants/{variant_name}"]) + src_filter.append(f"+<../variants/{variant_name}>") -if not platform_stm32: - src_filter.append("-") -if not platform_esp32: - src_filter.append("-") -if not platform_nrf52: - src_filter.append("-") -if not platform_rp2040: - src_filter.append("-") +menv.Replace(SRC_FILTER=src_filter) -env.Replace(SRC_FILTER=src_filter) - -print (env.Dump()) +#print (menv.Dump()) From b88a360adab85851cfab4bdcc732ee82f7b521be Mon Sep 17 00:00:00 2001 From: Florent Date: Sun, 24 Aug 2025 14:47:03 +0200 Subject: [PATCH 3/3] lib_build: add nrf52 and RP2040 --- build_as_lib.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/build_as_lib.py b/build_as_lib.py index f3410625..da4337c0 100644 --- a/build_as_lib.py +++ b/build_as_lib.py @@ -6,20 +6,39 @@ menv=env # type: ignore src_filter = [ '+<*.cpp>', '+', + '+' '+', '+', ] +# add build and include dirs according to CPPDEFINES for item in menv.get("CPPDEFINES", []): + + # STM32 if isinstance(item, str) and item == "STM32_PLATFORM": - # add STM32 specific sources menv.Append(CPPPATH=[realpath("src/helpers/stm32")]) menv.Append(BUILD_FLAGS=["-I src/helpers/stm32"]) src_filter.append("+") + + # ESP32 elif isinstance(item, str) and item == "ESP32": menv.Append(CPPPATH=[realpath("src/helpers/esp32")]) menv.Append(BUILD_FLAGS=["-I src/helpers/esp32"]) src_filter.append("+") + + # NRF52 + elif isinstance(item, str) and item == "NRF52_PLATFORM": + menv.Append(CPPPATH=[realpath("src/helpers/nrf52")]) + menv.Append(BUILD_FLAGS=["-I src/helpers/nrf52"]) + src_filter.append("+") + + # RP2040 + elif isinstance(item, str) and item == "RP2040_PLATFORM": + menv.Append(CPPPATH=[realpath("src/helpers/rp2040")]) + menv.Append(BUILD_FLAGS=["-I src/helpers/rp2040"]) + src_filter.append("+") + + # VARIANTS HANDLING elif isinstance(item, tuple) and item[0] == "MC_VARIANT": variant_name = item[1] menv.Append(BUILD_FLAGS=[f"-I variants/{variant_name}"])