add micropython compile script
This commit is contained in:
parent
a5d568a173
commit
d28cb7ac7d
12 changed files with 381 additions and 314 deletions
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
|
||||
if(CONFIG_KENDRYTE_SDK_ENABLE)
|
||||
################# Add include #################
|
||||
list(APPEND ADD_INCLUDE "include"
|
||||
"kendryte-standalone-sdk/lib/bsp/include"
|
||||
|
|
@ -32,7 +32,7 @@ SET_SOURCE_FILES_PROPERTIES(${ADD_ASM_SRCS} PROPERTIES COMPILE_FLAGS "-x assembl
|
|||
###############################################
|
||||
|
||||
###### Add required/dependent components ######
|
||||
list(APPEND ADD_REQUIREMENTS gcc m c)
|
||||
list(APPEND ADD_REQUIREMENTS gcc m c atomic)
|
||||
###############################################
|
||||
|
||||
############ Add static libs ##################
|
||||
|
|
@ -47,5 +47,5 @@ add_definitions(-DCONFIG_LOG_LEVEL=${CONFIG_SDK_LOG_LEVEL}
|
|||
)
|
||||
|
||||
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,4 +1,4 @@
|
|||
|
||||
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")
|
||||
|
|
@ -7,6 +7,7 @@ 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")
|
||||
|
||||
################# Add include #################
|
||||
list(APPEND ADD_INCLUDE "${mpy_core_dir}"
|
||||
|
|
@ -184,7 +185,7 @@ list(APPEND ADD_SRCS ${MPY_SRCS}
|
|||
set_property(SOURCE ${MPY_FROZEN_SRC} PROPERTY GENERATED 1)
|
||||
###############################################
|
||||
|
||||
############ QSTR ##############
|
||||
############ QSTR(SRC_QSTR) ##############
|
||||
set(QSTR_SRCS ${ADD_SRCS})
|
||||
list(REMOVE_ITEM QSTR_SRCS "core/py/nlr.c"
|
||||
"core/py/nlrsetjmp.c"
|
||||
|
|
@ -206,49 +207,62 @@ add_custom_command(OUTPUT ${version_header}
|
|||
|
||||
# add qstr header
|
||||
set(qstr_header ${mpy_build_gen_header_dir}/qstrdefs.generated.h)
|
||||
set_property(SOURCE ${qstr_header} PROPERTY GENERATED 1)
|
||||
# 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_0 NATIVE_COMMAND)
|
||||
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} ${CMAKE_C_FLAGS} ${QSTR_SRCS_FULL_PATH} ${QSTR_GLOBAL_DEPENDENCIES} > ${mpy_build_gen_header_dir}/qstr.i.last
|
||||
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 ${version_header}
|
||||
DEPENDS ${MODULE_DEFS}
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
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 ${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}
|
||||
)
|
||||
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})
|
||||
add_custom_command(OUTPUT ${mpy}
|
||||
COMMAND ${mpy_dir}/mpy-cross/mpy-cross -o ${py_name}.mpy -s ${py_name}.py ${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()
|
||||
string(REPLACE ".py" ".mpy" frozen_mpy ${frozen_py})
|
||||
add_custom_command(OUTPUT ${MPY_FROZEN_SRC} DEPENDS ${qstr_header} ${frozen_mpy}
|
||||
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}
|
||||
)
|
||||
|
||||
################################
|
||||
|
|
@ -270,3 +284,6 @@ 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
|
||||
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})
|
||||
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