add micropython compile script
This commit is contained in:
parent
a5d568a173
commit
d28cb7ac7d
12 changed files with 381 additions and 314 deletions
|
|
@ -1,51 +1,51 @@
|
|||
|
||||
if(CONFIG_KENDRYTE_SDK_ENABLE)
|
||||
################# Add include #################
|
||||
list(APPEND ADD_INCLUDE "include"
|
||||
"kendryte-standalone-sdk/lib/bsp/include"
|
||||
"kendryte-standalone-sdk/lib/drivers/include"
|
||||
"kendryte-standalone-sdk/lib/freertos/include"
|
||||
"kendryte-standalone-sdk/lib/freertos/conf"
|
||||
"kendryte-standalone-sdk/lib/freertos/portable"
|
||||
"kendryte-standalone-sdk/lib/utils/include"
|
||||
)
|
||||
list(APPEND ADD_PRIVATE_INCLUDE "include_private")
|
||||
###############################################
|
||||
|
||||
################# Add include #################
|
||||
list(APPEND ADD_INCLUDE "include"
|
||||
"kendryte-standalone-sdk/lib/bsp/include"
|
||||
"kendryte-standalone-sdk/lib/drivers/include"
|
||||
"kendryte-standalone-sdk/lib/freertos/include"
|
||||
"kendryte-standalone-sdk/lib/freertos/conf"
|
||||
"kendryte-standalone-sdk/lib/freertos/portable"
|
||||
"kendryte-standalone-sdk/lib/utils/include"
|
||||
)
|
||||
list(APPEND ADD_PRIVATE_INCLUDE "include_private")
|
||||
###############################################
|
||||
|
||||
############## Add source files ###############
|
||||
aux_source_directory("kendryte-standalone-sdk/lib/bsp" ADD_SRCS_BSP)
|
||||
aux_source_directory("kendryte-standalone-sdk/lib/drivers" ADD_SRCS_DRIVER)
|
||||
aux_source_directory("kendryte-standalone-sdk/lib/freertos" ADD_SRCS_FREERTOS)
|
||||
aux_source_directory("kendryte-standalone-sdk/lib/freertos/portable" ADD_SRCS_FREERTOS2)
|
||||
set(ADD_ASM_SRCS "kendryte-standalone-sdk/lib/bsp/crt.S"
|
||||
"kendryte-standalone-sdk/lib/freertos/portable/portasm.S"
|
||||
)
|
||||
list(APPEND ADD_SRCS ${ADD_SRCS_BSP}
|
||||
${ADD_SRCS_DRIVER}
|
||||
${ADD_SRCS_FREERTOS}
|
||||
${ADD_SRCS_FREERTOS2}
|
||||
${ADD_ASM_SRCS}
|
||||
############## Add source files ###############
|
||||
aux_source_directory("kendryte-standalone-sdk/lib/bsp" ADD_SRCS_BSP)
|
||||
aux_source_directory("kendryte-standalone-sdk/lib/drivers" ADD_SRCS_DRIVER)
|
||||
aux_source_directory("kendryte-standalone-sdk/lib/freertos" ADD_SRCS_FREERTOS)
|
||||
aux_source_directory("kendryte-standalone-sdk/lib/freertos/portable" ADD_SRCS_FREERTOS2)
|
||||
set(ADD_ASM_SRCS "kendryte-standalone-sdk/lib/bsp/crt.S"
|
||||
"kendryte-standalone-sdk/lib/freertos/portable/portasm.S"
|
||||
)
|
||||
# list(REMOVE_ITEM COMPONENT_SRCS "src/test.c")
|
||||
SET_PROPERTY(SOURCE ${ADD_ASM_SRCS} PROPERTY LANGUAGE C)
|
||||
SET_SOURCE_FILES_PROPERTIES(${ADD_ASM_SRCS} PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp -D __riscv64")
|
||||
###############################################
|
||||
list(APPEND ADD_SRCS ${ADD_SRCS_BSP}
|
||||
${ADD_SRCS_DRIVER}
|
||||
${ADD_SRCS_FREERTOS}
|
||||
${ADD_SRCS_FREERTOS2}
|
||||
${ADD_ASM_SRCS}
|
||||
)
|
||||
# list(REMOVE_ITEM COMPONENT_SRCS "src/test.c")
|
||||
SET_PROPERTY(SOURCE ${ADD_ASM_SRCS} PROPERTY LANGUAGE C)
|
||||
SET_SOURCE_FILES_PROPERTIES(${ADD_ASM_SRCS} PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp -D __riscv64")
|
||||
###############################################
|
||||
|
||||
###### Add required/dependent components ######
|
||||
list(APPEND ADD_REQUIREMENTS gcc m c)
|
||||
###############################################
|
||||
###### Add required/dependent components ######
|
||||
list(APPEND ADD_REQUIREMENTS gcc m c atomic)
|
||||
###############################################
|
||||
|
||||
############ Add static libs ##################
|
||||
# list(APPEND ADD_STATIC_LIB "lib/libtest.a")
|
||||
###############################################
|
||||
############ Add static libs ##################
|
||||
# list(APPEND ADD_STATIC_LIB "lib/libtest.a")
|
||||
###############################################
|
||||
|
||||
add_definitions(-DCONFIG_LOG_LEVEL=${CONFIG_SDK_LOG_LEVEL}
|
||||
-DCONFIG_LOG_ENABLE=1
|
||||
-DCONFIG_LOG_COLORS=1
|
||||
-DLOG_KERNEL=1
|
||||
-D__riscv64
|
||||
)
|
||||
|
||||
register_component()
|
||||
add_definitions(-DCONFIG_LOG_LEVEL=${CONFIG_SDK_LOG_LEVEL}
|
||||
-DCONFIG_LOG_ENABLE=1
|
||||
-DCONFIG_LOG_COLORS=1
|
||||
-DLOG_KERNEL=1
|
||||
-D__riscv64
|
||||
)
|
||||
|
||||
register_component()
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,13 @@
|
|||
|
||||
menu "Toolchain configuration"
|
||||
|
||||
config KENDRYTE_SDK_ENABLE
|
||||
bool "Enable kendryte sdk"
|
||||
default n
|
||||
menu "Kendryte configurations"
|
||||
visible if KENDRYTE_SDK_ENABLE
|
||||
config SDK_LOG_LEVEL
|
||||
int "log level, 5:LOG_VERBOSE, 4:LOG_DEBUG, 3:LOG_INFO, 2:LOG_WARN, 1:LOG_ERROR, 0:LOG_NONE"
|
||||
default 5
|
||||
endmenu
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,272 +1,289 @@
|
|||
if(CONFIG_MICROPYTHON_ENABLE)
|
||||
set(mpy_component_name "micropython")
|
||||
get_filename_component(mpy_dir ${CMAKE_CURRENT_LIST_FILE} DIRECTORY)
|
||||
set(mpy_core_dir "${mpy_dir}/core")
|
||||
set(mpy_core_src_dir "${mpy_core_dir}/py")
|
||||
set(mpy_port_dir "${mpy_dir}/port")
|
||||
set(mpy_build_dir "${CMAKE_BINARY_DIR}/micropython")
|
||||
set(mpy_build_gen_header_dir "${mpy_build_dir}/genhdr")
|
||||
set(mpy_frozen_py_dir "${mpy_port_dir}/builtin_py")
|
||||
set(mpy_build_mpy_dir "${mpy_build_dir}/mpy")
|
||||
|
||||
set(mpy_component_name "micropython")
|
||||
get_filename_component(mpy_dir ${CMAKE_CURRENT_LIST_FILE} DIRECTORY)
|
||||
set(mpy_core_dir "${mpy_dir}/core")
|
||||
set(mpy_core_src_dir "${mpy_core_dir}/py")
|
||||
set(mpy_port_dir "${mpy_dir}/port")
|
||||
set(mpy_build_dir "${CMAKE_BINARY_DIR}/micropython")
|
||||
set(mpy_build_gen_header_dir "${mpy_build_dir}/genhdr")
|
||||
set(mpy_frozen_py_dir "${mpy_port_dir}/builtin_py")
|
||||
|
||||
################# Add include #################
|
||||
list(APPEND ADD_INCLUDE "${mpy_core_dir}"
|
||||
"${mpy_core_src_dir}"
|
||||
"${mpy_port_dir}/include"
|
||||
"${mpy_build_dir}"
|
||||
)
|
||||
# list(APPEND ADD_PRIVATE_INCLUDE "include_private")
|
||||
###############################################
|
||||
|
||||
############## Add source files ###############
|
||||
aux_source_directory("port/src" MPY_PORT_SRCS)
|
||||
# set(ADD_ASM_SRCS "kendryte-standalone-sdk/lib/bsp/crt.S"
|
||||
# "kendryte-standalone-sdk/lib/freertos/portable/portasm.S"
|
||||
# )
|
||||
list(APPEND MPY_SRCS
|
||||
"core/py/mpstate.c"
|
||||
"core/py/nlr.c"
|
||||
"core/py/nlrx86.c"
|
||||
"core/py/nlrx64.c"
|
||||
"core/py/nlrthumb.c"
|
||||
"core/py/nlrxtensa.c"
|
||||
"core/py/nlrsetjmp.c"
|
||||
"core/py/malloc.c"
|
||||
"core/py/gc.c"
|
||||
"core/py/pystack.c"
|
||||
"core/py/qstr.c"
|
||||
"core/py/vstr.c"
|
||||
"core/py/mpprint.c"
|
||||
"core/py/unicode.c"
|
||||
"core/py/mpz.c"
|
||||
"core/py/reader.c"
|
||||
"core/py/lexer.c"
|
||||
"core/py/parse.c"
|
||||
"core/py/scope.c"
|
||||
"core/py/compile.c"
|
||||
"core/py/emitcommon.c"
|
||||
"core/py/emitbc.c"
|
||||
"core/py/asmbase.c"
|
||||
"core/py/asmx64.c"
|
||||
"core/py/emitnx64.c"
|
||||
"core/py/asmx86.c"
|
||||
"core/py/emitnx86.c"
|
||||
"core/py/asmthumb.c"
|
||||
"core/py/emitnthumb.c"
|
||||
"core/py/emitinlinethumb.c"
|
||||
"core/py/asmarm.c"
|
||||
"core/py/emitnarm.c"
|
||||
"core/py/asmxtensa.c"
|
||||
"core/py/emitnxtensa.c"
|
||||
"core/py/emitinlinextensa.c"
|
||||
"core/py/formatfloat.c"
|
||||
"core/py/parsenumbase.c"
|
||||
"core/py/parsenum.c"
|
||||
"core/py/emitglue.c"
|
||||
"core/py/persistentcode.c"
|
||||
"core/py/runtime.c"
|
||||
"core/py/runtime_utils.c"
|
||||
"core/py/scheduler.c"
|
||||
"core/py/nativeglue.c"
|
||||
"core/py/stackctrl.c"
|
||||
"core/py/argcheck.c"
|
||||
"core/py/warning.c"
|
||||
"core/py/map.c"
|
||||
"core/py/obj.c"
|
||||
"core/py/objarray.c"
|
||||
"core/py/objattrtuple.c"
|
||||
"core/py/objbool.c"
|
||||
"core/py/objboundmeth.c"
|
||||
"core/py/objcell.c"
|
||||
"core/py/objclosure.c"
|
||||
"core/py/objcomplex.c"
|
||||
"core/py/objdeque.c"
|
||||
"core/py/objdict.c"
|
||||
"core/py/objenumerate.c"
|
||||
"core/py/objexcept.c"
|
||||
"core/py/objfilter.c"
|
||||
"core/py/objfloat.c"
|
||||
"core/py/objfun.c"
|
||||
"core/py/objgenerator.c"
|
||||
"core/py/objgetitemiter.c"
|
||||
"core/py/objint.c"
|
||||
"core/py/objint_longlong.c"
|
||||
"core/py/objint_mpz.c"
|
||||
"core/py/objlist.c"
|
||||
"core/py/objmap.c"
|
||||
"core/py/objmodule.c"
|
||||
"core/py/objobject.c"
|
||||
"core/py/objpolyiter.c"
|
||||
"core/py/objproperty.c"
|
||||
"core/py/objnone.c"
|
||||
"core/py/objnamedtuple.c"
|
||||
"core/py/objrange.c"
|
||||
"core/py/objreversed.c"
|
||||
"core/py/objset.c"
|
||||
"core/py/objsingleton.c"
|
||||
"core/py/objslice.c"
|
||||
"core/py/objstr.c"
|
||||
"core/py/objstrunicode.c"
|
||||
"core/py/objstringio.c"
|
||||
"core/py/objtuple.c"
|
||||
"core/py/objtype.c"
|
||||
"core/py/objzip.c"
|
||||
"core/py/opmethods.c"
|
||||
"core/py/sequence.c"
|
||||
"core/py/stream.c"
|
||||
"core/py/binary.c"
|
||||
"core/py/builtinimport.c"
|
||||
"core/py/builtinevex.c"
|
||||
"core/py/builtinhelp.c"
|
||||
"core/py/modarray.c"
|
||||
"core/py/modbuiltins.c"
|
||||
"core/py/modcollections.c"
|
||||
"core/py/modgc.c"
|
||||
"core/py/modio.c"
|
||||
"core/py/modmath.c"
|
||||
"core/py/modcmath.c"
|
||||
"core/py/modmicropython.c"
|
||||
"core/py/modstruct.c"
|
||||
"core/py/modsys.c"
|
||||
"core/py/moduerrno.c"
|
||||
"core/py/modthread.c"
|
||||
"core/py/vm.c"
|
||||
"core/py/bc.c"
|
||||
"core/py/showbc.c"
|
||||
"core/py/repl.c"
|
||||
"core/py/smallint.c"
|
||||
"core/py/frozenmod.c"
|
||||
################# Add include #################
|
||||
list(APPEND ADD_INCLUDE "${mpy_core_dir}"
|
||||
"${mpy_core_src_dir}"
|
||||
"${mpy_port_dir}/include"
|
||||
"${mpy_build_dir}"
|
||||
)
|
||||
# list(APPEND ADD_PRIVATE_INCLUDE "include_private")
|
||||
###############################################
|
||||
|
||||
list(APPEND MPY_EXTMOD_SRCS
|
||||
"core/extmod/moductypes.c"
|
||||
"core/extmod/modujson.c"
|
||||
"core/extmod/modure.c"
|
||||
"core/extmod/moduzlib.c"
|
||||
"core/extmod/moduheapq.c"
|
||||
"core/extmod/modutimeq.c"
|
||||
"core/extmod/moduhashlib.c"
|
||||
"core/extmod/moducryptolib.c"
|
||||
"core/extmod/modubinascii.c"
|
||||
"core/extmod/virtpin.c"
|
||||
"core/extmod/machine_mem.c"
|
||||
"core/extmod/machine_pinbase.c"
|
||||
"core/extmod/machine_signal.c"
|
||||
"core/extmod/machine_pulse.c"
|
||||
"core/extmod/machine_i2c.c"
|
||||
"core/extmod/machine_spi.c"
|
||||
"core/extmod/modussl_axtls.c"
|
||||
"core/extmod/modussl_mbedtls.c"
|
||||
"core/extmod/modurandom.c"
|
||||
"core/extmod/moduselect.c"
|
||||
"core/extmod/moduwebsocket.c"
|
||||
"core/extmod/modwebrepl.c"
|
||||
"core/extmod/modframebuf.c"
|
||||
"core/extmod/vfs.c"
|
||||
"core/extmod/vfs_reader.c"
|
||||
"core/extmod/vfs_posix.c"
|
||||
"core/extmod/vfs_posix_file.c"
|
||||
"core/extmod/vfs_fat.c"
|
||||
"core/extmod/vfs_fat_diskio.c"
|
||||
"core/extmod/vfs_fat_file.c"
|
||||
"core/extmod/utime_mphal.c"
|
||||
"core/extmod/uos_dupterm.c"
|
||||
"core/lib/embed/abort_.c"
|
||||
"core/lib/utils/printf.c"
|
||||
)
|
||||
set(MPY_FROZEN_SRC "${mpy_build_dir}/frozen_mpy.c")
|
||||
|
||||
list(APPEND ADD_SRCS ${MPY_SRCS}
|
||||
${MPY_PORT_SRCS}
|
||||
${MPY_EXTMOD_SRCS}
|
||||
${MPY_FROZEN_SRC}
|
||||
)
|
||||
# list(APPEND ADD_SRCS_GENERATED ${MPY_FROZEN_SRC})
|
||||
set_property(SOURCE ${MPY_FROZEN_SRC} PROPERTY GENERATED 1)
|
||||
###############################################
|
||||
|
||||
############ QSTR ##############
|
||||
set(QSTR_SRCS ${ADD_SRCS})
|
||||
list(REMOVE_ITEM QSTR_SRCS "core/py/nlr.c"
|
||||
"core/py/nlrsetjmp.c"
|
||||
"core/py/nlrthumb.c"
|
||||
"core/py/nlrx64.c"
|
||||
"core/py/nlrx86.c"
|
||||
"core/py/nlrxtensa.c"
|
||||
${MPY_FROZEN_SRC}
|
||||
)
|
||||
|
||||
# add version header
|
||||
set(version_header ${mpy_build_gen_header_dir}/mpversion.h)
|
||||
add_custom_command(OUTPUT ${version_header}
|
||||
COMMAND mkdir -p ${mpy_build_gen_header_dir}
|
||||
COMMAND ${python} ${mpy_core_src_dir}/makeversionhdr.py ${version_header}
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
|
||||
# add qstr header
|
||||
set(qstr_header ${mpy_build_gen_header_dir}/qstrdefs.generated.h)
|
||||
set_property(SOURCE ${qstr_header} PROPERTY GENERATED 1)
|
||||
set(PY_QSTR_DEFS ${mpy_core_src_dir}/qstrdefs.h)
|
||||
set(QSTR_DEFS ${mpy_port_dir}/include/qstrdefsport.h)
|
||||
set(QSTR_DEFS_COLLECTED ${mpy_build_gen_header_dir}/qstrdefs.collected.h)
|
||||
set(QSTR_GEN_EXTRA_CFLAGS -DNO_QSTR -I${mpy_build_dir}/tmp)
|
||||
set(QSTR_GLOBAL_DEPENDENCIES ${mpy_core_src_dir}/mpconfig.h ${mpy_port_dir}/include/mpconfigport.h)
|
||||
|
||||
abspath(QSTR_SRCS_FULL_PATH ${QSTR_SRCS})
|
||||
|
||||
|
||||
# separate_arguments(cmd_0 NATIVE_COMMAND)
|
||||
add_custom_command(OUTPUT ${QSTR_DEFS_COLLECTED}
|
||||
COMMAND ${CMAKE_C_COMPILER} -E ${QSTR_GEN_EXTRA_CFLAGS} ${CMAKE_C_FLAGS} ${QSTR_SRCS_FULL_PATH} ${QSTR_GLOBAL_DEPENDENCIES} > ${mpy_build_gen_header_dir}/qstr.i.last
|
||||
COMMAND ${python} ${mpy_core_src_dir}/makeqstrdefs.py split ${mpy_build_gen_header_dir}/qstr.i.last ${mpy_build_gen_header_dir}/qstr ${QSTR_DEFS_COLLECTED}
|
||||
COMMAND touch ${mpy_build_gen_header_dir}/qstr.split
|
||||
COMMAND ${python} ${mpy_core_src_dir}/makeqstrdefs.py cat ${mpy_build_gen_header_dir}/qstr.i.last ${mpy_build_gen_header_dir}/qstr ${QSTR_DEFS_COLLECTED}
|
||||
DEPENDS ${version_header}
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
add_custom_target(gen_mpy_cross
|
||||
COMMAND make -j20 -C ${mpy_core_dir}/mpy-cross
|
||||
)
|
||||
add_custom_command(OUTPUT ${qstr_header} COMMAND
|
||||
COMMAND ${mpy_core_src_dir}/makeqstrdata.py ${mpy_build_gen_header_dir}/qstrdefs.preprocessed.h > ${qstr_header}
|
||||
COMMAND cat ${PY_QSTR_DEFS} ${QSTR_DEFS} ${QSTR_DEFS_COLLECTED} | sed 's/^Q(.*)/\"&\"/' | ${CMAKE_C_COMPILER} -E ${CMAKE_C_FLAGS} - | sed 's/^\"\\(Q(.*)\\)\"/\\1/' > ${mpy_build_gen_header_dir}/qstrdefs.preprocessed.h
|
||||
DEPENDS gen_mpy_cross ${version_header} ${QSTR_DEFS_COLLECTED}
|
||||
############## Add source files ###############
|
||||
aux_source_directory("port/src" MPY_PORT_SRCS)
|
||||
# set(ADD_ASM_SRCS "kendryte-standalone-sdk/lib/bsp/crt.S"
|
||||
# "kendryte-standalone-sdk/lib/freertos/portable/portasm.S"
|
||||
# )
|
||||
list(APPEND MPY_SRCS
|
||||
"core/py/mpstate.c"
|
||||
"core/py/nlr.c"
|
||||
"core/py/nlrx86.c"
|
||||
"core/py/nlrx64.c"
|
||||
"core/py/nlrthumb.c"
|
||||
"core/py/nlrxtensa.c"
|
||||
"core/py/nlrsetjmp.c"
|
||||
"core/py/malloc.c"
|
||||
"core/py/gc.c"
|
||||
"core/py/pystack.c"
|
||||
"core/py/qstr.c"
|
||||
"core/py/vstr.c"
|
||||
"core/py/mpprint.c"
|
||||
"core/py/unicode.c"
|
||||
"core/py/mpz.c"
|
||||
"core/py/reader.c"
|
||||
"core/py/lexer.c"
|
||||
"core/py/parse.c"
|
||||
"core/py/scope.c"
|
||||
"core/py/compile.c"
|
||||
"core/py/emitcommon.c"
|
||||
"core/py/emitbc.c"
|
||||
"core/py/asmbase.c"
|
||||
"core/py/asmx64.c"
|
||||
"core/py/emitnx64.c"
|
||||
"core/py/asmx86.c"
|
||||
"core/py/emitnx86.c"
|
||||
"core/py/asmthumb.c"
|
||||
"core/py/emitnthumb.c"
|
||||
"core/py/emitinlinethumb.c"
|
||||
"core/py/asmarm.c"
|
||||
"core/py/emitnarm.c"
|
||||
"core/py/asmxtensa.c"
|
||||
"core/py/emitnxtensa.c"
|
||||
"core/py/emitinlinextensa.c"
|
||||
"core/py/formatfloat.c"
|
||||
"core/py/parsenumbase.c"
|
||||
"core/py/parsenum.c"
|
||||
"core/py/emitglue.c"
|
||||
"core/py/persistentcode.c"
|
||||
"core/py/runtime.c"
|
||||
"core/py/runtime_utils.c"
|
||||
"core/py/scheduler.c"
|
||||
"core/py/nativeglue.c"
|
||||
"core/py/stackctrl.c"
|
||||
"core/py/argcheck.c"
|
||||
"core/py/warning.c"
|
||||
"core/py/map.c"
|
||||
"core/py/obj.c"
|
||||
"core/py/objarray.c"
|
||||
"core/py/objattrtuple.c"
|
||||
"core/py/objbool.c"
|
||||
"core/py/objboundmeth.c"
|
||||
"core/py/objcell.c"
|
||||
"core/py/objclosure.c"
|
||||
"core/py/objcomplex.c"
|
||||
"core/py/objdeque.c"
|
||||
"core/py/objdict.c"
|
||||
"core/py/objenumerate.c"
|
||||
"core/py/objexcept.c"
|
||||
"core/py/objfilter.c"
|
||||
"core/py/objfloat.c"
|
||||
"core/py/objfun.c"
|
||||
"core/py/objgenerator.c"
|
||||
"core/py/objgetitemiter.c"
|
||||
"core/py/objint.c"
|
||||
"core/py/objint_longlong.c"
|
||||
"core/py/objint_mpz.c"
|
||||
"core/py/objlist.c"
|
||||
"core/py/objmap.c"
|
||||
"core/py/objmodule.c"
|
||||
"core/py/objobject.c"
|
||||
"core/py/objpolyiter.c"
|
||||
"core/py/objproperty.c"
|
||||
"core/py/objnone.c"
|
||||
"core/py/objnamedtuple.c"
|
||||
"core/py/objrange.c"
|
||||
"core/py/objreversed.c"
|
||||
"core/py/objset.c"
|
||||
"core/py/objsingleton.c"
|
||||
"core/py/objslice.c"
|
||||
"core/py/objstr.c"
|
||||
"core/py/objstrunicode.c"
|
||||
"core/py/objstringio.c"
|
||||
"core/py/objtuple.c"
|
||||
"core/py/objtype.c"
|
||||
"core/py/objzip.c"
|
||||
"core/py/opmethods.c"
|
||||
"core/py/sequence.c"
|
||||
"core/py/stream.c"
|
||||
"core/py/binary.c"
|
||||
"core/py/builtinimport.c"
|
||||
"core/py/builtinevex.c"
|
||||
"core/py/builtinhelp.c"
|
||||
"core/py/modarray.c"
|
||||
"core/py/modbuiltins.c"
|
||||
"core/py/modcollections.c"
|
||||
"core/py/modgc.c"
|
||||
"core/py/modio.c"
|
||||
"core/py/modmath.c"
|
||||
"core/py/modcmath.c"
|
||||
"core/py/modmicropython.c"
|
||||
"core/py/modstruct.c"
|
||||
"core/py/modsys.c"
|
||||
"core/py/moduerrno.c"
|
||||
"core/py/modthread.c"
|
||||
"core/py/vm.c"
|
||||
"core/py/bc.c"
|
||||
"core/py/showbc.c"
|
||||
"core/py/repl.c"
|
||||
"core/py/smallint.c"
|
||||
"core/py/frozenmod.c"
|
||||
)
|
||||
|
||||
list(APPEND MPY_EXTMOD_SRCS
|
||||
"core/extmod/moductypes.c"
|
||||
"core/extmod/modujson.c"
|
||||
"core/extmod/modure.c"
|
||||
"core/extmod/moduzlib.c"
|
||||
"core/extmod/moduheapq.c"
|
||||
"core/extmod/modutimeq.c"
|
||||
"core/extmod/moduhashlib.c"
|
||||
"core/extmod/moducryptolib.c"
|
||||
"core/extmod/modubinascii.c"
|
||||
"core/extmod/virtpin.c"
|
||||
"core/extmod/machine_mem.c"
|
||||
"core/extmod/machine_pinbase.c"
|
||||
"core/extmod/machine_signal.c"
|
||||
"core/extmod/machine_pulse.c"
|
||||
"core/extmod/machine_i2c.c"
|
||||
"core/extmod/machine_spi.c"
|
||||
"core/extmod/modussl_axtls.c"
|
||||
"core/extmod/modussl_mbedtls.c"
|
||||
"core/extmod/modurandom.c"
|
||||
"core/extmod/moduselect.c"
|
||||
"core/extmod/moduwebsocket.c"
|
||||
"core/extmod/modwebrepl.c"
|
||||
"core/extmod/modframebuf.c"
|
||||
"core/extmod/vfs.c"
|
||||
"core/extmod/vfs_reader.c"
|
||||
"core/extmod/vfs_posix.c"
|
||||
"core/extmod/vfs_posix_file.c"
|
||||
"core/extmod/vfs_fat.c"
|
||||
"core/extmod/vfs_fat_diskio.c"
|
||||
"core/extmod/vfs_fat_file.c"
|
||||
"core/extmod/utime_mphal.c"
|
||||
"core/extmod/uos_dupterm.c"
|
||||
"core/lib/embed/abort_.c"
|
||||
"core/lib/utils/printf.c"
|
||||
)
|
||||
set(MPY_FROZEN_SRC "${mpy_build_dir}/frozen_mpy.c")
|
||||
|
||||
file(GLOB frozen_py "${mpy_frozen_py_dir}/*.py")
|
||||
foreach(py ${frozen_py})
|
||||
get_filename_component(py_name ${py} NAME)
|
||||
string(REPLACE ".py" "" py_name ${py_name})
|
||||
string(REPLACE ".py" ".mpy" mpy ${py})
|
||||
add_custom_command(OUTPUT ${mpy}
|
||||
COMMAND ${mpy_dir}/mpy-cross/mpy-cross -o ${py_name}.mpy -s ${py_name}.py ${py}
|
||||
)
|
||||
# add_custom_target("mpy_${py_name}_target" DEPENDS ${mpy})
|
||||
endforeach()
|
||||
string(REPLACE ".py" ".mpy" frozen_mpy ${frozen_py})
|
||||
add_custom_command(OUTPUT ${MPY_FROZEN_SRC} DEPENDS ${qstr_header} ${frozen_mpy}
|
||||
COMMAND ${python} ${mpy_core_dir}/tools/mpy-tool.py -f -q ${mpy_build_gen_header_dir}/qstrdefs.preprocessed.h ${frozen_mpy} > ${MPY_FROZEN_SRC}
|
||||
list(APPEND ADD_SRCS ${MPY_SRCS}
|
||||
${MPY_PORT_SRCS}
|
||||
${MPY_EXTMOD_SRCS}
|
||||
${MPY_FROZEN_SRC}
|
||||
)
|
||||
# list(APPEND ADD_SRCS_GENERATED ${MPY_FROZEN_SRC})
|
||||
set_property(SOURCE ${MPY_FROZEN_SRC} PROPERTY GENERATED 1)
|
||||
###############################################
|
||||
|
||||
############ QSTR(SRC_QSTR) ##############
|
||||
set(QSTR_SRCS ${ADD_SRCS})
|
||||
list(REMOVE_ITEM QSTR_SRCS "core/py/nlr.c"
|
||||
"core/py/nlrsetjmp.c"
|
||||
"core/py/nlrthumb.c"
|
||||
"core/py/nlrx64.c"
|
||||
"core/py/nlrx86.c"
|
||||
"core/py/nlrxtensa.c"
|
||||
${MPY_FROZEN_SRC}
|
||||
)
|
||||
|
||||
# add version header
|
||||
set(version_header ${mpy_build_gen_header_dir}/mpversion.h)
|
||||
add_custom_command(OUTPUT ${version_header}
|
||||
COMMAND mkdir -p ${mpy_build_gen_header_dir}
|
||||
COMMAND ${python} ${mpy_core_src_dir}/makeversionhdr.py ${version_header}
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
|
||||
# add qstr header
|
||||
set(qstr_header ${mpy_build_gen_header_dir}/qstrdefs.generated.h)
|
||||
# set_property(SOURCE ${qstr_header} PROPERTY GENERATED 1)
|
||||
set(PY_QSTR_DEFS ${mpy_core_src_dir}/qstrdefs.h)
|
||||
set(QSTR_DEFS ${mpy_port_dir}/include/qstrdefsport.h)
|
||||
set(MODULE_DEFS ${mpy_build_gen_header_dir}/moduledefs.h)
|
||||
set(QSTR_DEFS_COLLECTED ${mpy_build_gen_header_dir}/qstrdefs.collected.h)
|
||||
set(QSTR_GEN_EXTRA_CFLAGS -DNO_QSTR -I${mpy_build_dir}/tmp)
|
||||
set(QSTR_GLOBAL_DEPENDENCIES ${mpy_core_src_dir}/mpconfig.h ${mpy_port_dir}/include/mpconfigport.h)
|
||||
prepend(include_flags "-I" ${ADD_INCLUDE})
|
||||
string(REPLACE ";" " " include_flags "${include_flags}")
|
||||
|
||||
add_custom_command(OUTPUT ${MODULE_DEFS}
|
||||
COMMAND ${python} ${mpy_core_src_dir}/makemoduledefs.py --vpath=${mpy_core_dir}, ${mpy_dir}, ${QSTR_SRCS} > ${MODULE_DEFS}
|
||||
DEPENDS ${version_header}
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
################################
|
||||
abspath(QSTR_SRCS_FULL_PATH ${QSTR_SRCS})
|
||||
separate_arguments(cmd_cflag NATIVE_COMMAND ${CMAKE_C_FLAGS})
|
||||
separate_arguments(cmd_cinclude NATIVE_COMMAND ${include_flags})
|
||||
add_custom_command(OUTPUT ${QSTR_DEFS_COLLECTED}
|
||||
COMMAND ${CMAKE_C_COMPILER} -E ${QSTR_GEN_EXTRA_CFLAGS} ${cmd_cflag} ${cmd_cinclude} ${QSTR_SRCS_FULL_PATH} ${QSTR_GLOBAL_DEPENDENCIES} > ${mpy_build_gen_header_dir}/qstr.i.last
|
||||
COMMAND ${python} ${mpy_core_src_dir}/makeqstrdefs.py split ${mpy_build_gen_header_dir}/qstr.i.last ${mpy_build_gen_header_dir}/qstr ${QSTR_DEFS_COLLECTED}
|
||||
COMMAND touch ${mpy_build_gen_header_dir}/qstr.split
|
||||
COMMAND ${python} ${mpy_core_src_dir}/makeqstrdefs.py cat ${mpy_build_gen_header_dir}/qstr.i.last ${mpy_build_gen_header_dir}/qstr ${QSTR_DEFS_COLLECTED}
|
||||
DEPENDS ${MODULE_DEFS}
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
|
||||
|
||||
###### Add required/dependent components ######
|
||||
# list(APPEND ADD_REQUIREMENTS gcc m c)
|
||||
###############################################
|
||||
|
||||
############ Add static libs ##################
|
||||
# list(APPEND ADD_STATIC_LIB "lib/libtest.a")
|
||||
###############################################
|
||||
|
||||
add_definitions(-DFFCONF_H="${mpy_core_dir}/lib/ffconf.h"
|
||||
add_custom_target(gen_mpy_cross
|
||||
COMMAND make -j20 -C ${mpy_core_dir}/mpy-cross
|
||||
)
|
||||
separate_arguments(cmd_sed0 NATIVE_COMMAND "s/^Q(.*)/\"&\"/")
|
||||
separate_arguments(cmd_sed1 NATIVE_COMMAND "s/^\"\\(Q(.*)\\)\"/\\1/")
|
||||
add_custom_command(OUTPUT ${qstr_header} COMMAND
|
||||
COMMAND cat ${PY_QSTR_DEFS} ${QSTR_DEFS} ${QSTR_DEFS_COLLECTED} | sed '${cmd_sed0}' | ${CMAKE_C_COMPILER} -E ${cmd_cflag} ${cmd_cinclude} - | sed '${cmd_sed1}' > ${mpy_build_gen_header_dir}/qstrdefs.preprocessed.h
|
||||
COMMAND ${python} ${mpy_core_src_dir}/makeqstrdata.py ${mpy_build_gen_header_dir}/qstrdefs.preprocessed.h > ${qstr_header}
|
||||
DEPENDS gen_mpy_cross ${version_header} ${MODULE_DEFS} ${QSTR_DEFS_COLLECTED}
|
||||
|
||||
)
|
||||
|
||||
file(GLOB frozen_py "${mpy_frozen_py_dir}/*.py")
|
||||
foreach(py ${frozen_py})
|
||||
get_filename_component(py_name ${py} NAME)
|
||||
string(REPLACE ".py" "" py_name ${py_name})
|
||||
string(REPLACE ".py" ".mpy" mpy ${py})
|
||||
set(mpy_path ${mpy_build_mpy_dir}/${py_name}.mpy)
|
||||
list(APPEND frozen_mpy ${mpy_path})
|
||||
add_custom_command(OUTPUT ${mpy_path}
|
||||
COMMAND mkdir -p ${mpy_build_mpy_dir}
|
||||
COMMAND ${mpy_core_dir}/mpy-cross/mpy-cross -o ${mpy_path} -s ${py_name}.py ${py}
|
||||
)
|
||||
# add_custom_target("mpy_${py_name}_target" DEPENDS ${mpy})
|
||||
endforeach()
|
||||
add_custom_command(OUTPUT ${MPY_FROZEN_SRC}
|
||||
COMMAND ${python} ${mpy_core_dir}/tools/mpy-tool.py -f -q ${mpy_build_gen_header_dir}/qstrdefs.preprocessed.h ${frozen_mpy} > ${MPY_FROZEN_SRC}
|
||||
DEPENDS ${qstr_header} ${frozen_mpy}
|
||||
)
|
||||
|
||||
################################
|
||||
|
||||
|
||||
# add_dependencies(${mpy_component_name} $gen_mpy_cross})
|
||||
|
||||
register_component()
|
||||
###### Add required/dependent components ######
|
||||
# list(APPEND ADD_REQUIREMENTS gcc m c)
|
||||
###############################################
|
||||
|
||||
############ Add static libs ##################
|
||||
# list(APPEND ADD_STATIC_LIB "lib/libtest.a")
|
||||
###############################################
|
||||
|
||||
add_definitions(-DFFCONF_H="${mpy_core_dir}/lib/ffconf.h"
|
||||
)
|
||||
|
||||
|
||||
# add_dependencies(${mpy_component_name} $gen_mpy_cross})
|
||||
|
||||
register_component()
|
||||
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
menu "Toolchain configuration"
|
||||
config MICROPYTHON_ENABLE
|
||||
bool "enbale micropython module"
|
||||
default false
|
||||
endmenu
|
||||
|
||||
config MICROPYTHON_ENABLE
|
||||
bool "enbale micropython module"
|
||||
default n
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,8 @@
|
|||
#define MICROPY_PY_SYS (0)
|
||||
#define MICROPY_MODULE_FROZEN_MPY (1)
|
||||
#define MICROPY_CPYTHON_COMPAT (0)
|
||||
#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_NONE)
|
||||
#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ)
|
||||
#define MPZ_DIG_SIZE (16)
|
||||
#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_NONE)
|
||||
|
||||
// type definitions for the specific machine
|
||||
|
|
|
|||
|
|
@ -2,13 +2,46 @@
|
|||
########## set C flags #########
|
||||
set(CMAKE_C_FLAGS -Os
|
||||
-Wall
|
||||
-Werror=all
|
||||
-Wno-error=unused-function
|
||||
-Wno-error=unused-but-set-variable
|
||||
-Wno-error=unused-variable
|
||||
-Wno-error=deprecated-declarations
|
||||
-Wno-error=maybe-uninitialized
|
||||
-Wextra
|
||||
-Werror=frame-larger-than=32768
|
||||
-Wno-unused-parameter
|
||||
-Wno-unused-function
|
||||
-Wno-implicit-fallthrough
|
||||
-Wno-sign-compare
|
||||
-Wno-error=missing-braces
|
||||
-Wno-old-style-declaration
|
||||
-Wno-error=pointer-sign
|
||||
-Wno-pointer-to-int-cast
|
||||
-Wno-strict-aliasing
|
||||
-Wno-int-to-pointer-cast
|
||||
)
|
||||
################################
|
||||
|
||||
|
||||
###### set CXX(cpp) flags ######
|
||||
set(CMAKE_CXX_FLAGS -std=gnu++17
|
||||
-Wall
|
||||
set(CMAKE_CXX_FLAGS -Wall
|
||||
-Wno-error=unused-function
|
||||
-Wno-error=unused-but-set-variable
|
||||
-Wno-error=unused-variable
|
||||
-Wno-error=deprecated-declarations
|
||||
-Wno-error=maybe-uninitialized
|
||||
-Wextra
|
||||
-Werror=frame-larger-than=32768
|
||||
-Wno-unused-parameter
|
||||
-Wno-unused-function
|
||||
-Wno-implicit-fallthrough
|
||||
-Wno-sign-compare
|
||||
-Wno-error=missing-braces
|
||||
-Wno-error=pointer-sign
|
||||
-Wno-pointer-to-int-cast
|
||||
-Wno-strict-aliasing
|
||||
-Wno-int-to-pointer-cast
|
||||
)
|
||||
################################
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,16 @@
|
|||
############### Add include ###################
|
||||
# list(APPEND ADD_INCLUDE "include"
|
||||
# )
|
||||
# list(APPEND ADD_PRIVATE_INCLUDE "")
|
||||
# list(APPEND ADD_PRIVATE_INCLUDE "${CMAKE_BINARY_DIR}/micropython/genhdr")
|
||||
###############################################
|
||||
|
||||
############ Add source files #################
|
||||
list(APPEND ADD_SRCS "src/main.c"
|
||||
"${SDK_PATH}/components/micropython/core/lib/utils/printf.c"
|
||||
"${SDK_PATH}/components/micropython/core/lib/utils/stdout_helpers.c"
|
||||
"${SDK_PATH}/components/micropython/core/lib/utils/pyexec.c"
|
||||
"${SDK_PATH}/components/micropython/core/lib/libc/string0.c"
|
||||
"${SDK_PATH}/components/micropython/core/lib/mp-readline/readline.c"
|
||||
)
|
||||
# aux_source_directory(src ADD_SRCS)
|
||||
# list(REMOVE_ITEM COMPONENT_SRCS "src/test2.c")
|
||||
|
|
|
|||
1
requirements.txt
Normal file
1
requirements.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
pyserial==3.4
|
||||
|
|
@ -253,7 +253,11 @@ macro(project name)
|
|||
foreach(component_dir ${components_dirs})
|
||||
get_filename_component(base_dir ${component_dir} NAME)
|
||||
add_subdirectory(${component_dir} ${base_dir})
|
||||
add_dependencies(${base_dir} update_build_info) # add build info dependence
|
||||
if(TARGET ${base_dir})
|
||||
add_dependencies(${base_dir} update_build_info) # add build info dependence
|
||||
else()
|
||||
message(STATUS "component ${base_dir} not enabled")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -130,6 +130,7 @@ elif project_args.cmd == "distclean":
|
|||
if os.path.exists("build"):
|
||||
os.chdir("build")
|
||||
subprocess.call(["make", "clean"])
|
||||
os.chdir("..")
|
||||
shutil.rmtree("build")
|
||||
print("clean complete")
|
||||
elif project_args.cmd == "menuconfig":
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
function(prepend out prefix)
|
||||
set(listVar "")
|
||||
foreach(f ${ARGN})
|
||||
list(APPEND listVar "${prefix}/${f}")
|
||||
list(APPEND listVar "${prefix}${f}")
|
||||
endforeach(f)
|
||||
set(${out} "${listVar}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
|
|
|||
Loading…
Reference in a new issue