Skip to content

extmod: Add more modules to cmake ports #40

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Apr 21, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions src/emlearn_arrayutils/micropython.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
add_library(usermod_emlearn_arrayutils INTERFACE)

execute_process(
COMMAND python3 -c "import emlearn; print(emlearn.includedir)"
OUTPUT_VARIABLE EMLEARN_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)

target_sources(usermod_emlearn_arrayutils INTERFACE
${CMAKE_CURRENT_LIST_DIR}/modarrayutils.c
)

target_include_directories(usermod_emlearn_arrayutils INTERFACE
${EMLEARN_DIR}
)

target_link_libraries(usermod INTERFACE usermod_emlearn_arrayutils)
3 changes: 2 additions & 1 deletion src/emlearn_arrayutils/modarrayutils.c
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@

#include <string.h>

#ifdef MICROPY_ENABLE_DYNRUNTIME
// memset is used by some standard C constructs
#if !defined(__linux__)
void *memcpy(void *dst, const void *src, size_t n) {
@@ -16,7 +17,7 @@ void *memset(void *s, int c, size_t n) {
return mp_fun_table.memset_(s, c, n);
}
#endif

#endif


#define MAP_LINEAR(x, in_min, in_max, out_min, out_max) do { \
3 changes: 2 additions & 1 deletion src/emlearn_fft/fft.c
Original file line number Diff line number Diff line change
@@ -11,6 +11,7 @@

#define DEBUG (0)

#ifdef MICROPY_ENABLE_DYNRUNTIME
// memset is used by some standard C constructs
#if !defined(__linux__)
void *memcpy(void *dst, const void *src, size_t n) {
@@ -20,7 +21,7 @@ void *memset(void *s, int c, size_t n) {
return mp_fun_table.memset_(s, c, n);
}
#endif

#endif

// Copy of eml_fft.h, without eml_fft_fill
// - contains sin/cos that trips up mpy_ld.py (even if the function is not used)
17 changes: 17 additions & 0 deletions src/emlearn_fft/micropython.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
add_library(usermod_emlearn_fft INTERFACE)

execute_process(
COMMAND python3 -c "import emlearn; print(emlearn.includedir)"
OUTPUT_VARIABLE EMLEARN_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)

target_sources(usermod_emlearn_fft INTERFACE
${CMAKE_CURRENT_LIST_DIR}/fft.c
)

target_include_directories(usermod_emlearn_fft INTERFACE
${EMLEARN_DIR}
)

target_link_libraries(usermod INTERFACE usermod_emlearn_fft)
3 changes: 2 additions & 1 deletion src/emlearn_iir/iir_filter.c
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@

#include <string.h>

#ifdef MICROPY_ENABLE_DYNRUNTIME
// memset is used by some standard C constructs
#if !defined(__linux__)
void *memcpy(void *dst, const void *src, size_t n) {
@@ -24,7 +25,7 @@ void NORETURN abort() {
}
}
#endif

#endif


// MicroPython type for EmlIIR
17 changes: 17 additions & 0 deletions src/emlearn_iir/micropython.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
add_library(usermod_emlearn_iir INTERFACE)

execute_process(
COMMAND python3 -c "import emlearn; print(emlearn.includedir)"
OUTPUT_VARIABLE EMLEARN_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)

target_sources(usermod_emlearn_iir INTERFACE
${CMAKE_CURRENT_LIST_DIR}/iir_filter.c
)

target_include_directories(usermod_emlearn_iir INTERFACE
${EMLEARN_DIR}
)

target_link_libraries(usermod INTERFACE usermod_emlearn_iir)
4 changes: 4 additions & 0 deletions src/micropython.cmake
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@

include(${CMAKE_CURRENT_LIST_DIR}/emlearn_trees/micropython.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/emlearn_fft/micropython.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/emlearn_iir/micropython.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/emlearn_arrayutils/micropython.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/tinymaix_cnn/micropython.cmake)
22 changes: 22 additions & 0 deletions src/tinymaix_cnn/micropython.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
add_library(usermod_cnn INTERFACE)

execute_process(
COMMAND python3 -c "import emlearn; print(emlearn.includedir)"
OUTPUT_VARIABLE EMLEARN_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)

target_sources(usermod_cnn INTERFACE
${CMAKE_CURRENT_LIST_DIR}/mod_cnn.c
)

target_include_directories(usermod_cnn INTERFACE
${CMAKE_CURRENT_LIST_DIR}/int8
${CMAKE_CURRENT_LIST_DIR}/../../dependencies/TinyMaix/include
${CMAKE_CURRENT_LIST_DIR}/../../dependencies/TinyMaix/src
)

target_compile_options(usermod_cnn INTERFACE
-Wno-error=unused-variable -Wno-error=multichar -Wdouble-promotion
)
target_link_libraries(usermod INTERFACE usermod_cnn)
2 changes: 2 additions & 0 deletions src/tinymaix_cnn/mod_cnn.c
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ void mod_cnn_free(void *ptr);
#define DEBUG (0)


#ifdef MICROPY_ENABLE_DYNRUNTIME
// memset is used by some standard C constructs
#if !defined(__linux__)
void *memcpy(void *dst, const void *src, size_t n) {
@@ -32,6 +33,7 @@ void *memset(void *s, int c, size_t n) {
return mp_fun_table.memset_(s, c, n);
}
#endif
#endif

// get model output shapes
//mdl: model handle; in: input mat; out: output mat