![Damien George](/assets/img/avatar_default.png)
This is a code factoring to have the Python bindings in one location, and all the ports use those same bindings. For all ports except the two listed below there is no functional change. The nrf port has UART.sendbreak() removed, but this method previously did nothing. The zephyr port has the following methods added: - UART.init(): supports setting timeout and timeout_char. - UART.deinit(): does nothing, just returns None. - UART.flush(): raises OSError(EINVAL) because it's not implemented. - UART.any() and UART.txdone(): raise NotImplementedError. Signed-off-by: Damien George <damien@micropython.org>
281 lines
11 KiB
CMake
281 lines
11 KiB
CMake
# CMake fragment for MicroPython extmod component
|
|
|
|
set(MICROPY_EXTMOD_DIR "${MICROPY_DIR}/extmod")
|
|
set(MICROPY_OOFATFS_DIR "${MICROPY_DIR}/lib/oofatfs")
|
|
|
|
set(MICROPY_SOURCE_EXTMOD
|
|
${MICROPY_DIR}/shared/libc/abort_.c
|
|
${MICROPY_DIR}/shared/libc/printf.c
|
|
${MICROPY_EXTMOD_DIR}/btstack/modbluetooth_btstack.c
|
|
${MICROPY_EXTMOD_DIR}/machine_adc.c
|
|
${MICROPY_EXTMOD_DIR}/machine_bitstream.c
|
|
${MICROPY_EXTMOD_DIR}/machine_i2c.c
|
|
${MICROPY_EXTMOD_DIR}/machine_i2s.c
|
|
${MICROPY_EXTMOD_DIR}/machine_mem.c
|
|
${MICROPY_EXTMOD_DIR}/machine_pulse.c
|
|
${MICROPY_EXTMOD_DIR}/machine_pwm.c
|
|
${MICROPY_EXTMOD_DIR}/machine_signal.c
|
|
${MICROPY_EXTMOD_DIR}/machine_spi.c
|
|
${MICROPY_EXTMOD_DIR}/machine_uart.c
|
|
${MICROPY_EXTMOD_DIR}/machine_wdt.c
|
|
${MICROPY_EXTMOD_DIR}/modbluetooth.c
|
|
${MICROPY_EXTMOD_DIR}/modframebuf.c
|
|
${MICROPY_EXTMOD_DIR}/modlwip.c
|
|
${MICROPY_EXTMOD_DIR}/modnetwork.c
|
|
${MICROPY_EXTMOD_DIR}/modonewire.c
|
|
${MICROPY_EXTMOD_DIR}/modasyncio.c
|
|
${MICROPY_EXTMOD_DIR}/modbinascii.c
|
|
${MICROPY_EXTMOD_DIR}/modcryptolib.c
|
|
${MICROPY_EXTMOD_DIR}/moductypes.c
|
|
${MICROPY_EXTMOD_DIR}/moddeflate.c
|
|
${MICROPY_EXTMOD_DIR}/modhashlib.c
|
|
${MICROPY_EXTMOD_DIR}/modheapq.c
|
|
${MICROPY_EXTMOD_DIR}/modjson.c
|
|
${MICROPY_EXTMOD_DIR}/modos.c
|
|
${MICROPY_EXTMOD_DIR}/modplatform.c
|
|
${MICROPY_EXTMOD_DIR}/modrandom.c
|
|
${MICROPY_EXTMOD_DIR}/modre.c
|
|
${MICROPY_EXTMOD_DIR}/modselect.c
|
|
${MICROPY_EXTMOD_DIR}/modsocket.c
|
|
${MICROPY_EXTMOD_DIR}/modssl_axtls.c
|
|
${MICROPY_EXTMOD_DIR}/modssl_mbedtls.c
|
|
${MICROPY_EXTMOD_DIR}/modtime.c
|
|
${MICROPY_EXTMOD_DIR}/modwebsocket.c
|
|
${MICROPY_EXTMOD_DIR}/modwebrepl.c
|
|
${MICROPY_EXTMOD_DIR}/network_cyw43.c
|
|
${MICROPY_EXTMOD_DIR}/network_lwip.c
|
|
${MICROPY_EXTMOD_DIR}/network_ninaw10.c
|
|
${MICROPY_EXTMOD_DIR}/network_wiznet5k.c
|
|
${MICROPY_EXTMOD_DIR}/os_dupterm.c
|
|
${MICROPY_EXTMOD_DIR}/vfs.c
|
|
${MICROPY_EXTMOD_DIR}/vfs_blockdev.c
|
|
${MICROPY_EXTMOD_DIR}/vfs_fat.c
|
|
${MICROPY_EXTMOD_DIR}/vfs_fat_diskio.c
|
|
${MICROPY_EXTMOD_DIR}/vfs_fat_file.c
|
|
${MICROPY_EXTMOD_DIR}/vfs_lfs.c
|
|
${MICROPY_EXTMOD_DIR}/vfs_posix.c
|
|
${MICROPY_EXTMOD_DIR}/vfs_posix_file.c
|
|
${MICROPY_EXTMOD_DIR}/vfs_reader.c
|
|
${MICROPY_EXTMOD_DIR}/virtpin.c
|
|
${MICROPY_EXTMOD_DIR}/nimble/modbluetooth_nimble.c
|
|
)
|
|
|
|
# Library for btree module and associated code
|
|
|
|
if(MICROPY_PY_BTREE)
|
|
set(MICROPY_LIB_BERKELEY_DIR "${MICROPY_DIR}/lib/berkeley-db-1.xx")
|
|
string(CONCAT GIT_SUBMODULES "${GIT_SUBMODULES} " lib/berkeley-db-1.xx)
|
|
|
|
if(ECHO_SUBMODULES)
|
|
# No-op, we're just doing submodule/variant discovery.
|
|
# Cannot run the add_library/target_include_directories rules (even though
|
|
# the build won't run) because IDF will attempt verify the files exist.
|
|
elseif(NOT EXISTS ${MICROPY_LIB_BERKELEY_DIR}/README)
|
|
# Regular build, submodule not initialised -- fail with a clear error.
|
|
message(FATAL_ERROR " MICROPY_PY_BTREE is enabled but the berkeley-db submodule is not initialised.\n Run 'make BOARD=${MICROPY_BOARD} submodules'")
|
|
else()
|
|
# Regular build, we have the submodule.
|
|
add_library(micropy_extmod_btree OBJECT
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_close.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_conv.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_debug.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_delete.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_get.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_open.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_overflow.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_page.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_put.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_search.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_seq.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_split.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/btree/bt_utils.c
|
|
${MICROPY_LIB_BERKELEY_DIR}/mpool/mpool.c
|
|
)
|
|
|
|
target_include_directories(micropy_extmod_btree PRIVATE
|
|
${MICROPY_LIB_BERKELEY_DIR}/PORT/include
|
|
)
|
|
|
|
target_compile_definitions(micropy_extmod_btree PRIVATE
|
|
__DBINTERFACE_PRIVATE=1
|
|
mpool_error=printf
|
|
abort=abort_
|
|
"virt_fd_t=void*"
|
|
)
|
|
|
|
# The include directories and compile definitions below are needed to build
|
|
# modbtree.c and should be added to the main MicroPython target.
|
|
|
|
list(APPEND MICROPY_INC_CORE
|
|
"${MICROPY_LIB_BERKELEY_DIR}/PORT/include"
|
|
)
|
|
|
|
list(APPEND MICROPY_DEF_CORE
|
|
MICROPY_PY_BTREE=1
|
|
__DBINTERFACE_PRIVATE=1
|
|
"virt_fd_t=void*"
|
|
)
|
|
|
|
list(APPEND MICROPY_SOURCE_EXTMOD
|
|
${MICROPY_EXTMOD_DIR}/modbtree.c
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
# Library for mbedtls
|
|
|
|
if(MICROPY_SSL_MBEDTLS)
|
|
add_library(micropy_lib_mbedtls INTERFACE)
|
|
|
|
set(MICROPY_LIB_MBEDTLS_DIR "${MICROPY_DIR}/lib/mbedtls")
|
|
|
|
target_include_directories(micropy_lib_mbedtls INTERFACE
|
|
${MICROPY_LIB_MBEDTLS_DIR}/include
|
|
)
|
|
|
|
target_sources(micropy_lib_mbedtls INTERFACE
|
|
${MICROPY_DIR}/lib/mbedtls_errors/mp_mbedtls_errors.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/aes.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/aesni.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/arc4.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/asn1parse.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/asn1write.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/base64.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/bignum.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/blowfish.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/camellia.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ccm.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/certs.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/chacha20.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/chachapoly.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/cipher.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/cipher_wrap.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/cmac.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ctr_drbg.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/debug.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/des.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/dhm.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ecdh.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ecdsa.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ecjpake.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ecp.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ecp_curves.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/entropy.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/entropy_poll.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/gcm.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/havege.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/hmac_drbg.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/md2.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/md4.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/md5.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/md.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/oid.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/padlock.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/pem.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/pk.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/pkcs11.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/pkcs12.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/pkcs5.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/pkparse.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/pk_wrap.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/pkwrite.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/platform.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/platform_util.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/poly1305.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ripemd160.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/rsa.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/rsa_internal.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/sha1.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/sha256.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/sha512.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ssl_cache.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ssl_ciphersuites.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ssl_cli.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ssl_cookie.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ssl_srv.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ssl_msg.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ssl_ticket.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/ssl_tls.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/timing.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/constant_time.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/x509.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/x509_create.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/x509_crl.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/x509_crt.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/x509_csr.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/x509write_crt.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/x509write_csr.c
|
|
${MICROPY_LIB_MBEDTLS_DIR}/library/xtea.c
|
|
)
|
|
|
|
if(NOT MBEDTLS_CONFIG_FILE)
|
|
set(MBEDTLS_CONFIG_FILE "${MICROPY_PORT_DIR}/mbedtls/mbedtls_config.h")
|
|
endif()
|
|
|
|
target_compile_definitions(micropy_lib_mbedtls INTERFACE
|
|
MBEDTLS_CONFIG_FILE="${MBEDTLS_CONFIG_FILE}"
|
|
)
|
|
|
|
list(APPEND MICROPY_INC_CORE
|
|
"${MICROPY_LIB_MBEDTLS_DIR}/include"
|
|
)
|
|
endif()
|
|
|
|
# Library for lwIP network stack
|
|
|
|
if(MICROPY_PY_LWIP)
|
|
add_library(micropy_lib_lwip INTERFACE)
|
|
|
|
set(MICROPY_LIB_LWIP_DIR "${MICROPY_DIR}/lib/lwip/src")
|
|
|
|
target_include_directories(micropy_lib_lwip INTERFACE
|
|
${MICROPY_LIB_LWIP_DIR}/include
|
|
)
|
|
|
|
target_sources(micropy_lib_lwip INTERFACE
|
|
${MICROPY_DIR}/shared/netutils/netutils.c
|
|
${MICROPY_LIB_LWIP_DIR}/apps/mdns/mdns.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/def.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/dns.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/inet_chksum.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/init.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ip.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv4/autoip.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv4/dhcp.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv4/etharp.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv4/icmp.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv4/igmp.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv4/ip4.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv4/ip4_addr.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv4/ip4_frag.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv6/dhcp6.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv6/ethip6.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv6/icmp6.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv6/inet6.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv6/ip6.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv6/ip6_addr.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv6/ip6_frag.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv6/mld6.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/ipv6/nd6.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/mem.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/memp.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/netif.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/pbuf.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/raw.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/stats.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/sys.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/tcp.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/tcp_in.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/tcp_out.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/timeouts.c
|
|
${MICROPY_LIB_LWIP_DIR}/core/udp.c
|
|
${MICROPY_LIB_LWIP_DIR}/netif/ethernet.c
|
|
)
|
|
|
|
list(APPEND MICROPY_INC_CORE
|
|
${MICROPY_LIB_LWIP_DIR}/include
|
|
)
|
|
|
|
string(CONCAT GIT_SUBMODULES "${GIT_SUBMODULES} " lib/lwip)
|
|
endif()
|