643cbc3806
- Added POSIX desktop support for SDK builds, application packaging, and integration testing. - Added POSIX filesystem partitions and improved application path handling. - Added simulator support for loading and running applications dynamically. - Improved simulator task stack handling and display startup reliability. - Improved simulator display scaling, resizing, high-DPI support, and pointer accuracy. - Fixed LVGL timers and input polling on POSIX. (fixes simulator with Linux on some Intel graphics platforms) - Standardized data paths across platforms. - Logging now works via separate task: this allows apps to write to log without it affecting their stdout (for apps that output text as relevant date for other apps, like the File Selection app) - Fixes for app stdio
102 lines
5.2 KiB
Python
Executable File
102 lines
5.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import sys
|
|
import importlib.util
|
|
from textwrap import dedent
|
|
|
|
_shared_spec = importlib.util.spec_from_file_location("release_sdk_shared", os.path.join("Buildscripts", "release-sdk-shared.py"))
|
|
shared = importlib.util.module_from_spec(_shared_spec)
|
|
_shared_spec.loader.exec_module(shared)
|
|
|
|
def get_module_mappings(module_name):
|
|
return [
|
|
{'src': f'Modules/{module_name}/include/**', 'dst': f'Modules/{module_name}/include/'},
|
|
{'src': f'Modules/{module_name}/*.md', 'dst': f'Modules/{module_name}/'},
|
|
{'src': f'buildsim/Modules/{module_name}/lib{module_name}.a', 'dst': f'Modules/{module_name}/binary/lib{module_name}.a'},
|
|
]
|
|
|
|
def create_module_cmakelists(module_name):
|
|
return dedent(f'''
|
|
cmake_minimum_required(VERSION 3.20)
|
|
add_library({module_name} STATIC IMPORTED)
|
|
set_target_properties({module_name} PROPERTIES
|
|
IMPORTED_LOCATION "${{CMAKE_CURRENT_LIST_DIR}}/binary/lib{module_name}.a"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${{CMAKE_CURRENT_LIST_DIR}}/include"
|
|
)
|
|
''')
|
|
|
|
def add_module(target_path, module_name):
|
|
mappings = get_module_mappings(module_name)
|
|
shared.map_copy(mappings, target_path)
|
|
cmakelists_content = create_module_cmakelists(module_name)
|
|
shared.write_module_cmakelists(os.path.join(target_path, f"Modules/{module_name}/CMakeLists.txt"), cmakelists_content)
|
|
|
|
def main():
|
|
if len(sys.argv) < 2:
|
|
print("Usage: release-sdk-posix.py [target_path]")
|
|
print("Example: release-sdk-posix.py release/TactilitySDK")
|
|
sys.exit(1)
|
|
|
|
esp_idf_version = os.environ.get("ESP_IDF_VERSION", "")
|
|
if esp_idf_version:
|
|
print("Error: ESP_IDF_VERSION environment variable is set - this script packages the POSIX/simulator build, run it outside an ESP-IDF environment")
|
|
sys.exit(1)
|
|
|
|
target_path = os.path.abspath(sys.argv[1])
|
|
os.makedirs(target_path, exist_ok=True)
|
|
|
|
# Mapping logic
|
|
mappings = [
|
|
{'src': 'version.txt', 'dst': ''},
|
|
# TactilityFreeRtos
|
|
{'src': 'TactilityFreeRtos/Include/**', 'dst': 'Libraries/TactilityFreeRtos/Include/'},
|
|
{'src': 'TactilityFreeRtos/CMakeLists.txt', 'dst': 'Libraries/TactilityFreeRtos/'},
|
|
{'src': 'TactilityFreeRtos/LICENSE*.*', 'dst': 'Libraries/TactilityFreeRtos/'},
|
|
# TactilityKernel
|
|
{'src': 'buildsim/TactilityKernel/libTactilityKernel.a', 'dst': 'Libraries/TactilityKernel/binary/'},
|
|
{'src': 'TactilityKernel/include/**', 'dst': 'Libraries/TactilityKernel/include/'},
|
|
{'src': 'TactilityKernel/CMakeLists.txt', 'dst': 'Libraries/TactilityKernel/'},
|
|
{'src': 'TactilityKernel/*.md', 'dst': 'Libraries/TactilityKernel/'},
|
|
# FreeRTOS-Kernel - TactilityKernel's public headers (tactility/freertos/*.h) include the
|
|
# real FreeRTOS.h/task.h/etc directly, unlike ESP32 where ESP-IDF's own "freertos"
|
|
# component and Kconfig-generated FreeRTOSConfig.h are already part of every project.
|
|
{'src': 'Libraries/FreeRTOS-Kernel/include/**', 'dst': 'Libraries/FreeRTOS-Kernel/include/'},
|
|
{'src': 'Libraries/FreeRTOS-Kernel/portable/ThirdParty/GCC/Posix/*.h', 'dst': 'Libraries/FreeRTOS-Kernel/portable/ThirdParty/GCC/Posix/'},
|
|
{'src': 'Libraries/FreeRTOS-Kernel/portable/ThirdParty/GCC/Posix/utils/*.h', 'dst': 'Libraries/FreeRTOS-Kernel/portable/ThirdParty/GCC/Posix/utils/'},
|
|
{'src': 'Libraries/FreeRTOS-Kernel/LICENSE*.*', 'dst': 'Libraries/FreeRTOS-Kernel/'},
|
|
{'src': 'Devices/simulator/Source/FreeRTOSConfig.h', 'dst': 'Libraries/FreeRTOS-Kernel/include/'},
|
|
# lvgl (basics)
|
|
{'src': 'buildsim/Libraries/lvgl/lib/liblvgl.a', 'dst': 'Libraries/lvgl/binary/liblvgl.a'},
|
|
{'src': 'Libraries/lvgl/lvgl.h', 'dst': 'Libraries/lvgl/include/'},
|
|
{'src': 'Libraries/lvgl/lv_version.h', 'dst': 'Libraries/lvgl/include/'},
|
|
{'src': 'Libraries/lvgl/LICENCE*.*', 'dst': 'Libraries/lvgl/'},
|
|
{'src': 'lv_conf.h', 'dst': 'Libraries/lvgl/include/'},
|
|
{'src': 'Libraries/lvgl/src/**/*.h', 'dst': 'Libraries/lvgl/include/src/'},
|
|
# minitar
|
|
{'src': 'buildsim/Libraries/minitar/libminitar.a', 'dst': 'Libraries/minitar/binary/'},
|
|
{'src': 'Libraries/minitar/minitar/minitar.h', 'dst': 'Libraries/minitar/include/'},
|
|
{'src': 'Libraries/minitar/minitar/LICENSE*', 'dst': 'Libraries/minitar/'},
|
|
# minmea
|
|
{'src': 'buildsim/Libraries/minmea/libminmea.a', 'dst': 'Libraries/minmea/binary/'},
|
|
{'src': 'Libraries/minmea/Include/**', 'dst': 'Libraries/minmea/include/'},
|
|
{'src': 'Libraries/minmea/CMakeLists.txt', 'dst': 'Libraries/minmea/'},
|
|
{'src': 'Libraries/minmea/README.md', 'dst': 'Libraries/minmea/'},
|
|
{'src': 'Libraries/minmea/LICENSE*.*', 'dst': 'Libraries/minmea/'},
|
|
{'src': 'Libraries/minmea/COPYING', 'dst': 'Libraries/minmea/'},
|
|
]
|
|
|
|
shared.map_copy(mappings, target_path)
|
|
|
|
# Modules
|
|
module_names = shared.read_module_list(os.path.join('Buildscripts', 'release-sdk-modules.txt'))
|
|
for module_name in module_names:
|
|
add_module(target_path, module_name)
|
|
|
|
# Final scripts - copied verbatim
|
|
shared.generate_tactility_sdk_cmake(target_path, 'posix')
|
|
shared.generate_tactility_sdk_top_cmakelists(target_path)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|