summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2021-03-14 15:52:33 +1100
committerDamien George <damien@micropython.org>2021-03-14 15:53:18 +1100
commita9140ab09b7f2b878972a86dabc12d00ddaa463e (patch)
treef6efa668d5aae743b64350873a1dded18eb2e048
parenteccd73a403aef5b41368752b1d11d95e005bdc4b (diff)
rp2: Use core-provided cmake fragments instead of custom ones.
Signed-off-by: Damien George <damien@micropython.org>
-rw-r--r--ports/rp2/CMakeLists.txt194
-rw-r--r--ports/rp2/micropy_extmod.cmake40
-rw-r--r--ports/rp2/micropy_py.cmake134
-rw-r--r--ports/rp2/micropy_rules.cmake90
4 files changed, 121 insertions, 337 deletions
diff --git a/ports/rp2/CMakeLists.txt b/ports/rp2/CMakeLists.txt
index cf20245a3..3968194dc 100644
--- a/ports/rp2/CMakeLists.txt
+++ b/ports/rp2/CMakeLists.txt
@@ -6,8 +6,8 @@ if(NOT CMAKE_BUILD_TYPE)
endif()
# Set main target and component locations
-set(MICROPYTHON_TARGET firmware)
-get_filename_component(MPY_DIR "../.." ABSOLUTE)
+set(MICROPY_TARGET firmware)
+get_filename_component(MICROPY_DIR "../.." ABSOLUTE)
if (PICO_SDK_PATH_OVERRIDE)
set(PICO_SDK_PATH ${PICO_SDK_PATH_OVERRIDE})
else()
@@ -15,42 +15,46 @@ else()
endif()
# Use the local tinyusb instead of the one in pico-sdk
-set(PICO_TINYUSB_PATH ${MPY_DIR}/lib/tinyusb)
+set(PICO_TINYUSB_PATH ${MICROPY_DIR}/lib/tinyusb)
# Include component cmake fragments
-include(micropy_py.cmake)
-include(micropy_extmod.cmake)
+include(${MICROPY_DIR}/py/py.cmake)
+include(${MICROPY_DIR}/extmod/extmod.cmake)
include(${PICO_SDK_PATH}/pico_sdk_init.cmake)
# Define the top-level project
-project(${MICROPYTHON_TARGET})
+project(${MICROPY_TARGET})
pico_sdk_init()
-add_executable(${MICROPYTHON_TARGET})
-
-set(SOURCE_LIB
- ${MPY_DIR}/lib/littlefs/lfs1.c
- ${MPY_DIR}/lib/littlefs/lfs1_util.c
- ${MPY_DIR}/lib/littlefs/lfs2.c
- ${MPY_DIR}/lib/littlefs/lfs2_util.c
- ${MPY_DIR}/lib/mp-readline/readline.c
- ${MPY_DIR}/lib/oofatfs/ff.c
- ${MPY_DIR}/lib/oofatfs/ffunicode.c
- ${MPY_DIR}/lib/timeutils/timeutils.c
- ${MPY_DIR}/lib/utils/gchelper_m0.s
- ${MPY_DIR}/lib/utils/gchelper_native.c
- ${MPY_DIR}/lib/utils/mpirq.c
- ${MPY_DIR}/lib/utils/stdout_helpers.c
- ${MPY_DIR}/lib/utils/sys_stdio_mphal.c
- ${MPY_DIR}/lib/utils/pyexec.c
+add_executable(${MICROPY_TARGET})
+
+set(MICROPY_QSTRDEFS_PORT
+ ${PROJECT_SOURCE_DIR}/qstrdefsport.h
+)
+
+set(MICROPY_SOURCE_LIB
+ ${MICROPY_DIR}/lib/littlefs/lfs1.c
+ ${MICROPY_DIR}/lib/littlefs/lfs1_util.c
+ ${MICROPY_DIR}/lib/littlefs/lfs2.c
+ ${MICROPY_DIR}/lib/littlefs/lfs2_util.c
+ ${MICROPY_DIR}/lib/mp-readline/readline.c
+ ${MICROPY_DIR}/lib/oofatfs/ff.c
+ ${MICROPY_DIR}/lib/oofatfs/ffunicode.c
+ ${MICROPY_DIR}/lib/timeutils/timeutils.c
+ ${MICROPY_DIR}/lib/utils/gchelper_m0.s
+ ${MICROPY_DIR}/lib/utils/gchelper_native.c
+ ${MICROPY_DIR}/lib/utils/mpirq.c
+ ${MICROPY_DIR}/lib/utils/pyexec.c
+ ${MICROPY_DIR}/lib/utils/stdout_helpers.c
+ ${MICROPY_DIR}/lib/utils/sys_stdio_mphal.c
)
-set(SOURCE_DRIVERS
- ${MPY_DIR}/drivers/bus/softspi.c
+set(MICROPY_SOURCE_DRIVERS
+ ${MICROPY_DIR}/drivers/bus/softspi.c
)
-set(SOURCE_PORT
+set(MICROPY_SOURCE_PORT
fatfs_port.c
machine_adc.c
machine_i2c.c
@@ -73,11 +77,11 @@ set(SOURCE_PORT
uart.c
)
-set(SOURCE_QSTR
- ${SOURCE_PY}
- ${SOURCE_EXTMOD}
- ${MPY_DIR}/lib/utils/mpirq.c
- ${MPY_DIR}/lib/utils/sys_stdio_mphal.c
+set(MICROPY_SOURCE_QSTR
+ ${MICROPY_SOURCE_PY}
+ ${MICROPY_SOURCE_EXTMOD}
+ ${MICROPY_DIR}/lib/utils/mpirq.c
+ ${MICROPY_DIR}/lib/utils/sys_stdio_mphal.c
${PROJECT_SOURCE_DIR}/machine_adc.c
${PROJECT_SOURCE_DIR}/machine_i2c.c
${PROJECT_SOURCE_DIR}/machine_pin.c
@@ -94,37 +98,65 @@ set(SOURCE_QSTR
${PROJECT_SOURCE_DIR}/rp2_pio.c
)
-set(MPY_QSTR_DEFS ${PROJECT_SOURCE_DIR}/qstrdefsport.h)
+set(PICO_SDK_COMPONENTS
+ hardware_adc
+ hardware_base
+ hardware_clocks
+ hardware_dma
+ hardware_flash
+ hardware_gpio
+ hardware_i2c
+ hardware_irq
+ hardware_pio
+ hardware_pwm
+ hardware_regs
+ hardware_rtc
+ hardware_spi
+ hardware_structs
+ hardware_sync
+ hardware_timer
+ hardware_uart
+ hardware_watchdog
+ pico_base_headers
+ pico_binary_info
+ pico_bootrom
+ pico_multicore
+ pico_platform
+ pico_stdio
+ pico_stdlib
+ pico_sync
+ pico_time
+ pico_unique_id
+ tinyusb_device
+)
# Define mpy-cross flags and frozen manifest
-set(MPY_CROSS_FLAGS -march=armv7m)
-set(FROZEN_MANIFEST ${PROJECT_SOURCE_DIR}/manifest.py)
-
-include(micropy_rules.cmake)
-
-target_sources(${MICROPYTHON_TARGET} PRIVATE
- ${SOURCE_PY}
- ${SOURCE_EXTMOD}
- ${SOURCE_LIB}
- ${SOURCE_DRIVERS}
- ${SOURCE_PORT}
+set(MICROPY_CROSS_FLAGS -march=armv7m)
+set(MICROPY_FROZEN_MANIFEST ${PROJECT_SOURCE_DIR}/manifest.py)
+
+target_sources(${MICROPY_TARGET} PRIVATE
+ ${MICROPY_SOURCE_PY}
+ ${MICROPY_SOURCE_EXTMOD}
+ ${MICROPY_SOURCE_LIB}
+ ${MICROPY_SOURCE_DRIVERS}
+ ${MICROPY_SOURCE_PORT}
)
-target_include_directories(${MICROPYTHON_TARGET} PRIVATE
- "${PROJECT_SOURCE_DIR}"
- "${MPY_DIR}"
- "${CMAKE_BINARY_DIR}"
- )
+target_include_directories(${MICROPY_TARGET} PRIVATE
+ "${PROJECT_SOURCE_DIR}"
+ "${MICROPY_DIR}"
+ "${CMAKE_BINARY_DIR}"
+)
-target_compile_options(${MICROPYTHON_TARGET} PRIVATE
+target_compile_options(${MICROPY_TARGET} PRIVATE
-Wall
- #-Werror
- -DFFCONF_H=\"${MPY_DIR}/lib/oofatfs/ffconf.h\"
- -DLFS1_NO_MALLOC -DLFS1_NO_DEBUG -DLFS1_NO_WARN -DLFS1_NO_ERROR -DLFS1_NO_ASSERT
- -DLFS2_NO_MALLOC -DLFS2_NO_DEBUG -DLFS2_NO_WARN -DLFS2_NO_ERROR -DLFS2_NO_ASSERT
+ -Werror
)
-target_compile_definitions(${MICROPYTHON_TARGET} PRIVATE
+target_compile_definitions(${MICROPY_TARGET} PRIVATE
+ FFCONF_H=\"${MICROPY_OOFATFS_DIR}/ffconf.h\"
+ LFS1_NO_MALLOC LFS1_NO_DEBUG LFS1_NO_WARN LFS1_NO_ERROR LFS1_NO_ASSERT
+ LFS2_NO_MALLOC LFS2_NO_DEBUG LFS2_NO_WARN LFS2_NO_ERROR LFS2_NO_ASSERT
PICO_FLOAT_PROPAGATE_NANS=1
PICO_STACK_SIZE=0x2000
PICO_CORE1_STACK_SIZE=0
@@ -134,34 +166,50 @@ target_compile_definitions(${MICROPYTHON_TARGET} PRIVATE
PICO_NO_BI_STDIO_UART=1 # we call it UART REPL
)
-target_link_libraries(${MICROPYTHON_TARGET}
- hardware_adc
- hardware_dma
- hardware_flash
- hardware_i2c
- hardware_pio
- hardware_pwm
- hardware_rtc
- hardware_spi
- hardware_sync
- pico_multicore
- pico_stdlib_headers
- pico_stdlib
- pico_unique_id
- tinyusb_device
+target_link_libraries(${MICROPY_TARGET}
+ ${PICO_SDK_COMPONENTS}
)
# todo this is a bit brittle, but we want to move a few source files into RAM (which requires
# a linker script modification) until we explicitly add macro calls around the function
# defs to move them into RAM.
if (PICO_ON_DEVICE AND NOT PICO_NO_FLASH AND NOT PICO_COPY_TO_RAM)
- pico_set_linker_script(${MICROPYTHON_TARGET} ${CMAKE_CURRENT_LIST_DIR}/memmap_mp.ld)
+ pico_set_linker_script(${MICROPY_TARGET} ${CMAKE_CURRENT_LIST_DIR}/memmap_mp.ld)
endif()
-pico_add_extra_outputs(${MICROPYTHON_TARGET})
+pico_add_extra_outputs(${MICROPY_TARGET})
-add_custom_command(TARGET ${MICROPYTHON_TARGET}
+add_custom_command(TARGET ${MICROPY_TARGET}
POST_BUILD
- COMMAND arm-none-eabi-size --format=berkeley ${PROJECT_BINARY_DIR}/${MICROPYTHON_TARGET}.elf
+ COMMAND arm-none-eabi-size --format=berkeley ${PROJECT_BINARY_DIR}/${MICROPY_TARGET}.elf
VERBATIM
)
+
+# Collect all the include directories and compile definitions for the pico-sdk components.
+macro(_process_target targ)
+ if(TARGET ${targ})
+ get_target_property(type ${targ} TYPE)
+ set(_inc OFF)
+ set(_def OFF)
+ if(${type} STREQUAL STATIC_LIBRARY)
+ get_target_property(_inc ${targ} INCLUDE_DIRECTORIES)
+ get_target_property(_def ${targ} COMPILE_DEFINITIONS)
+ elseif(${type} STREQUAL INTERFACE_LIBRARY)
+ get_target_property(_inc ${targ} INTERFACE_INCLUDE_DIRECTORIES)
+ get_target_property(_def ${targ} INTERFACE_COMPILE_DEFINITIONS)
+ endif()
+ if(_inc)
+ list(APPEND MICROPY_CPP_INC_EXTRA ${_inc})
+ endif()
+ if(_def)
+ list(APPEND MICROPY_CPP_DEF_EXTRA ${_def})
+ endif()
+ endif()
+endmacro()
+foreach(comp ${PICO_SDK_COMPONENTS})
+ _process_target(${comp})
+ _process_target(${comp}_headers)
+endforeach()
+
+# Include the main MicroPython cmake rules.
+include(${MICROPY_DIR}/py/mkrules.cmake)
diff --git a/ports/rp2/micropy_extmod.cmake b/ports/rp2/micropy_extmod.cmake
deleted file mode 100644
index 1e968bef6..000000000
--- a/ports/rp2/micropy_extmod.cmake
+++ /dev/null
@@ -1,40 +0,0 @@
-# CMake fragment for MicroPython extmod component
-
-set(SOURCE_EXTMOD
- ${MPY_DIR}/extmod/machine_i2c.c
- ${MPY_DIR}/extmod/machine_mem.c
- ${MPY_DIR}/extmod/machine_pulse.c
- ${MPY_DIR}/extmod/machine_signal.c
- ${MPY_DIR}/extmod/machine_spi.c
- ${MPY_DIR}/extmod/modbtree.c
- ${MPY_DIR}/extmod/modframebuf.c
- ${MPY_DIR}/extmod/modonewire.c
- ${MPY_DIR}/extmod/moduasyncio.c
- ${MPY_DIR}/extmod/modubinascii.c
- ${MPY_DIR}/extmod/moducryptolib.c
- ${MPY_DIR}/extmod/moductypes.c
- ${MPY_DIR}/extmod/moduhashlib.c
- ${MPY_DIR}/extmod/moduheapq.c
- ${MPY_DIR}/extmod/modujson.c
- ${MPY_DIR}/extmod/modurandom.c
- ${MPY_DIR}/extmod/modure.c
- ${MPY_DIR}/extmod/moduselect.c
- ${MPY_DIR}/extmod/modussl_axtls.c
- ${MPY_DIR}/extmod/modussl_mbedtls.c
- ${MPY_DIR}/extmod/modutimeq.c
- ${MPY_DIR}/extmod/moduwebsocket.c
- ${MPY_DIR}/extmod/moduzlib.c
- ${MPY_DIR}/extmod/modwebrepl.c
- ${MPY_DIR}/extmod/uos_dupterm.c
- ${MPY_DIR}/extmod/utime_mphal.c
- ${MPY_DIR}/extmod/vfs.c
- ${MPY_DIR}/extmod/vfs_blockdev.c
- ${MPY_DIR}/extmod/vfs_fat.c
- ${MPY_DIR}/extmod/vfs_fat_diskio.c
- ${MPY_DIR}/extmod/vfs_fat_file.c
- ${MPY_DIR}/extmod/vfs_lfs.c
- ${MPY_DIR}/extmod/vfs_posix.c
- ${MPY_DIR}/extmod/vfs_posix_file.c
- ${MPY_DIR}/extmod/vfs_reader.c
- ${MPY_DIR}/extmod/virtpin.c
-)
diff --git a/ports/rp2/micropy_py.cmake b/ports/rp2/micropy_py.cmake
deleted file mode 100644
index aeb7e2b9b..000000000
--- a/ports/rp2/micropy_py.cmake
+++ /dev/null
@@ -1,134 +0,0 @@
-# CMake fragment for MicroPython core py component
-
-set(MPY_PY_DIR "${MPY_DIR}/py")
-set(MPY_PY_QSTRDEFS "${MPY_PY_DIR}/qstrdefs.h")
-set(MPY_GENHDR_DIR "${CMAKE_BINARY_DIR}/genhdr")
-set(MPY_MPVERSION "${MPY_GENHDR_DIR}/mpversion.h")
-set(MPY_MODULEDEFS "${MPY_GENHDR_DIR}/moduledefs.h")
-set(MPY_QSTR_DEFS_LAST "${MPY_GENHDR_DIR}/qstr.i.last")
-set(MPY_QSTR_DEFS_SPLIT "${MPY_GENHDR_DIR}/qstr.split")
-set(MPY_QSTR_DEFS_COLLECTED "${MPY_GENHDR_DIR}/qstrdefs.collected.h")
-set(MPY_QSTR_DEFS_PREPROCESSED "${MPY_GENHDR_DIR}/qstrdefs.preprocessed.h")
-set(MPY_QSTR_DEFS_GENERATED "${MPY_GENHDR_DIR}/qstrdefs.generated.h")
-set(MPY_FROZEN_CONTENT "${CMAKE_BINARY_DIR}/frozen_content.c")
-
-# All py/ source files
-set(SOURCE_PY
- ${MPY_PY_DIR}/argcheck.c
- ${MPY_PY_DIR}/asmarm.c
- ${MPY_PY_DIR}/asmbase.c
- ${MPY_PY_DIR}/asmthumb.c
- ${MPY_PY_DIR}/asmx64.c
- ${MPY_PY_DIR}/asmx86.c
- ${MPY_PY_DIR}/asmxtensa.c
- ${MPY_PY_DIR}/bc.c
- ${MPY_PY_DIR}/binary.c
- ${MPY_PY_DIR}/builtinevex.c
- ${MPY_PY_DIR}/builtinhelp.c
- ${MPY_PY_DIR}/builtinimport.c
- ${MPY_PY_DIR}/compile.c
- ${MPY_PY_DIR}/emitbc.c
- ${MPY_PY_DIR}/emitcommon.c
- ${MPY_PY_DIR}/emitglue.c
- ${MPY_PY_DIR}/emitinlinethumb.c
- ${MPY_PY_DIR}/emitinlinextensa.c
- ${MPY_PY_DIR}/emitnarm.c
- ${MPY_PY_DIR}/emitnthumb.c
- ${MPY_PY_DIR}/emitnx64.c
- ${MPY_PY_DIR}/emitnx86.c
- ${MPY_PY_DIR}/emitnxtensa.c
- ${MPY_PY_DIR}/emitnxtensawin.c
- ${MPY_PY_DIR}/formatfloat.c
- ${MPY_PY_DIR}/frozenmod.c
- ${MPY_PY_DIR}/gc.c
- ${MPY_PY_DIR}/lexer.c
- ${MPY_PY_DIR}/malloc.c
- ${MPY_PY_DIR}/map.c
- ${MPY_PY_DIR}/modarray.c
- ${MPY_PY_DIR}/modbuiltins.c
- ${MPY_PY_DIR}/modcmath.c
- ${MPY_PY_DIR}/modcollections.c
- ${MPY_PY_DIR}/modgc.c
- ${MPY_PY_DIR}/modio.c
- ${MPY_PY_DIR}/modmath.c
- ${MPY_PY_DIR}/modmicropython.c
- ${MPY_PY_DIR}/modstruct.c
- ${MPY_PY_DIR}/modsys.c
- ${MPY_PY_DIR}/modthread.c
- ${MPY_PY_DIR}/moduerrno.c
- ${MPY_PY_DIR}/mpprint.c
- ${MPY_PY_DIR}/mpstate.c
- ${MPY_PY_DIR}/mpz.c
- ${MPY_PY_DIR}/nativeglue.c
- ${MPY_PY_DIR}/nlr.c
- ${MPY_PY_DIR}/nlrpowerpc.c
- ${MPY_PY_DIR}/nlrsetjmp.c
- ${MPY_PY_DIR}/nlrthumb.c
- ${MPY_PY_DIR}/nlrx64.c
- ${MPY_PY_DIR}/nlrx86.c
- ${MPY_PY_DIR}/nlrxtensa.c
- ${MPY_PY_DIR}/obj.c
- ${MPY_PY_DIR}/objarray.c
- ${MPY_PY_DIR}/objattrtuple.c
- ${MPY_PY_DIR}/objbool.c
- ${MPY_PY_DIR}/objboundmeth.c
- ${MPY_PY_DIR}/objcell.c
- ${MPY_PY_DIR}/objclosure.c
- ${MPY_PY_DIR}/objcomplex.c
- ${MPY_PY_DIR}/objdeque.c
- ${MPY_PY_DIR}/objdict.c
- ${MPY_PY_DIR}/objenumerate.c
- ${MPY_PY_DIR}/objexcept.c
- ${MPY_PY_DIR}/objfilter.c
- ${MPY_PY_DIR}/objfloat.c
- ${MPY_PY_DIR}/objfun.c
- ${MPY_PY_DIR}/objgenerator.c
- ${MPY_PY_DIR}/objgetitemiter.c
- ${MPY_PY_DIR}/objint.c
- ${MPY_PY_DIR}/objint_longlong.c
- ${MPY_PY_DIR}/objint_mpz.c
- ${MPY_PY_DIR}/objlist.c
- ${MPY_PY_DIR}/objmap.c
- ${MPY_PY_DIR}/objmodule.c
- ${MPY_PY_DIR}/objnamedtuple.c
- ${MPY_PY_DIR}/objnone.c
- ${MPY_PY_DIR}/objobject.c
- ${MPY_PY_DIR}/objpolyiter.c
- ${MPY_PY_DIR}/objproperty.c
- ${MPY_PY_DIR}/objrange.c
- ${MPY_PY_DIR}/objreversed.c
- ${MPY_PY_DIR}/objset.c
- ${MPY_PY_DIR}/objsingleton.c
- ${MPY_PY_DIR}/objslice.c
- ${MPY_PY_DIR}/objstr.c
- ${MPY_PY_DIR}/objstringio.c
- ${MPY_PY_DIR}/objstrunicode.c
- ${MPY_PY_DIR}/objtuple.c
- ${MPY_PY_DIR}/objtype.c
- ${MPY_PY_DIR}/objzip.c
- ${MPY_PY_DIR}/opmethods.c
- ${MPY_PY_DIR}/pairheap.c
- ${MPY_PY_DIR}/parse.c
- ${MPY_PY_DIR}/parsenum.c
- ${MPY_PY_DIR}/parsenumbase.c
- ${MPY_PY_DIR}/persistentcode.c
- ${MPY_PY_DIR}/profile.c
- ${MPY_PY_DIR}/pystack.c
- ${MPY_PY_DIR}/qstr.c
- ${MPY_PY_DIR}/reader.c
- ${MPY_PY_DIR}/repl.c
- ${MPY_PY_DIR}/ringbuf.c
- ${MPY_PY_DIR}/runtime.c
- ${MPY_PY_DIR}/runtime_utils.c
- ${MPY_PY_DIR}/scheduler.c
- ${MPY_PY_DIR}/scope.c
- ${MPY_PY_DIR}/sequence.c
- ${MPY_PY_DIR}/showbc.c
- ${MPY_PY_DIR}/smallint.c
- ${MPY_PY_DIR}/stackctrl.c
- ${MPY_PY_DIR}/stream.c
- ${MPY_PY_DIR}/unicode.c
- ${MPY_PY_DIR}/vm.c
- ${MPY_PY_DIR}/vstr.c
- ${MPY_PY_DIR}/warning.c
-)
diff --git a/ports/rp2/micropy_rules.cmake b/ports/rp2/micropy_rules.cmake
deleted file mode 100644
index 9eee4ac14..000000000
--- a/ports/rp2/micropy_rules.cmake
+++ /dev/null
@@ -1,90 +0,0 @@
-# CMake fragment for MicroPython rules
-
-target_sources(${MICROPYTHON_TARGET} PRIVATE
- ${MPY_MPVERSION}
- ${MPY_QSTR_DEFS_GENERATED}
- ${MPY_FROZEN_CONTENT}
-)
-
-# Command to force the build of another command
-
-add_custom_command(
- OUTPUT FORCE_BUILD
- COMMENT ""
- COMMAND echo -n
-)
-
-# Generate mpversion.h
-
-add_custom_command(
- OUTPUT ${MPY_MPVERSION}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${MPY_GENHDR_DIR}
- COMMAND python3 ${MPY_DIR}/py/makeversionhdr.py ${MPY_MPVERSION}
- DEPENDS FORCE_BUILD
-)
-
-# Generate moduledefs.h
-
-add_custom_command(
- OUTPUT ${MPY_MODULEDEFS}
- COMMAND python3 ${MPY_PY_DIR}/makemoduledefs.py --vpath="/" ${SOURCE_QSTR} > ${MPY_MODULEDEFS}
- DEPENDS ${MPY_MPVERSION}
- ${SOURCE_QSTR}
-)
-
-# Generate qstrs
-
-# If any of the dependencies in this rule change then the C-preprocessor step must be run.
-# It only needs to be passed the list of SOURCE_QSTR files that have changed since it was
-# last run, but it looks like it's not possible to specify that with cmake.
-add_custom_command(
- OUTPUT ${MPY_QSTR_DEFS_LAST}
- COMMAND ${CMAKE_C_COMPILER} -E \$\(C_INCLUDES\) \$\(C_FLAGS\) -DNO_QSTR ${SOURCE_QSTR} > ${MPY_GENHDR_DIR}/qstr.i.last
- DEPENDS ${MPY_MODULEDEFS}
- ${SOURCE_QSTR}
- VERBATIM
-)
-
-add_custom_command(
- OUTPUT ${MPY_QSTR_DEFS_SPLIT}
- COMMAND python3 ${MPY_DIR}/py/makeqstrdefs.py split qstr ${MPY_GENHDR_DIR}/qstr.i.last ${MPY_GENHDR_DIR}/qstr _
- COMMAND touch ${MPY_QSTR_DEFS_SPLIT}
- DEPENDS ${MPY_QSTR_DEFS_LAST}
- VERBATIM
-)
-
-add_custom_command(
- OUTPUT ${MPY_QSTR_DEFS_COLLECTED}
- COMMAND python3 ${MPY_DIR}/py/makeqstrdefs.py cat qstr _ ${MPY_GENHDR_DIR}/qstr ${MPY_QSTR_DEFS_COLLECTED}
- DEPENDS ${MPY_QSTR_DEFS_SPLIT}
- VERBATIM
-)
-
-add_custom_command(
- OUTPUT ${MPY_QSTR_DEFS_PREPROCESSED}
- COMMAND cat ${MPY_PY_QSTRDEFS} ${MPY_QSTR_DEFS} ${MPY_QSTR_DEFS_COLLECTED} | sed "s/^Q(.*)/\"&\"/" | ${CMAKE_C_COMPILER} -E \$\(C_INCLUDES\) \$\(C_FLAGS\) - | sed "s/^\\\"\\(Q(.*)\\)\\\"/\\1/" > ${MPY_QSTR_DEFS_PREPROCESSED}
- DEPENDS ${MPY_PY_QSTRDEFS} ${MPY_QSTR_DEFS} ${MPY_QSTR_DEFS_COLLECTED}
- VERBATIM
-)
-
-add_custom_command(
- OUTPUT ${MPY_QSTR_DEFS_GENERATED}
- COMMAND python3 ${MPY_PY_DIR}/makeqstrdata.py ${MPY_QSTR_DEFS_PREPROCESSED} > ${MPY_QSTR_DEFS_GENERATED}
- DEPENDS ${MPY_QSTR_DEFS_PREPROCESSED}
- VERBATIM
-)
-
-# Build frozen code
-
-target_compile_options(${MICROPYTHON_TARGET} PUBLIC
- -DMICROPY_QSTR_EXTRA_POOL=mp_qstr_frozen_const_pool
- -DMICROPY_MODULE_FROZEN_MPY=\(1\)
-)
-
-add_custom_command(
- OUTPUT ${MPY_FROZEN_CONTENT}
- COMMAND python3 ${MPY_DIR}/tools/makemanifest.py -o ${MPY_FROZEN_CONTENT} -v "MPY_DIR=${MPY_DIR}" -v "PORT_DIR=${PROJECT_SOURCE_DIR}" -b "${CMAKE_BINARY_DIR}" -f${MPY_CROSS_FLAGS} ${FROZEN_MANIFEST}
- DEPENDS FORCE_BUILD
- ${MPY_QSTR_DEFS_GENERATED}
- VERBATIM
-)