import os import sys import time import shutil CC="riscv64-unknown-elf-gcc" OBJCPY="riscv64-unknown-elf-objcopy" OBJDUMP="riscv64-unknown-elf-objdump" CFLAG=[ "-march=rv32i", "-mabi=ilp32", "-ffunction-sections", "-fdata-sections", "-ffast-math", "-fno-common", "-fno-builtin-printf", "-Wall", "-Werror", "-g", "-O0", "-fno-omit-frame-pointer", "-msave-restore" ] INC=[ "-I./riscv/rtthread/libcpu/risc-v/common", "-I./riscv/rtthread/include", "-I./riscv/startup", "-I./riscv/rtthread/components/drivers/include" ] SRC=[ "riscv/startup/main.c", "riscv/startup/test.c", # "riscv/startup/interrupt.c", "riscv/startup/start.S", # "riscv/startup/trap.S", "riscv/startup/rtthread_irq.c", "riscv/rtthread/libcpu/risc-v/common/atomic_riscv.c", "riscv/rtthread/libcpu/risc-v/common/context_gcc.S", "riscv/rtthread/libcpu/risc-v/common/cpuport.c", "riscv/rtthread/libcpu/risc-v/common/interrupt_gcc.S", "riscv/rtthread/libcpu/risc-v/common/trap_common.c", "riscv/rtthread/src/clock.c", "riscv/rtthread/src/components.c", "riscv/rtthread/src/cpu.c", "riscv/rtthread/src/idle.c", "riscv/rtthread/src/ipc.c", "riscv/rtthread/src/irq.c", "riscv/rtthread/src/kservice.c", "riscv/rtthread/src/mem.c", "riscv/rtthread/src/memheap.c", "riscv/rtthread/src/mempool.c", "riscv/rtthread/src/object.c", "riscv/rtthread/src/scheduler_comm.c", # "riscv/rtthread/src/scheduler_mp.c", "riscv/rtthread/src/scheduler_up.c", "riscv/rtthread/src/signal.c", "riscv/rtthread/src/slab.c", "riscv/rtthread/src/thread.c", "riscv/rtthread/src/timer.c", "riscv/rtthread/src/klibc/kstdio.c", "riscv/rtthread/src/klibc/kstring.c", "riscv/rtthread/components/drivers/core/device.c" ] LD_FILE="riscv.ld" TARGET="riscv" OUTPUT="output" if __name__ == "__main__": if not os.path.exists(OUTPUT): os.mkdir(OUTPUT) cmd=f"{CC} {' '.join(CFLAG)} {' '.join(INC)} {' '.join(SRC)} -T{LD_FILE} -Wall -Wextra -nostartfiles -Wl,-Map,\"{TARGET}.map\" -o {TARGET}.elf" print(cmd) os.system(cmd) os.system(f"{OBJCPY} -O binary {TARGET}.elf {TARGET}.bin") os.system(f"{OBJCPY} -O ihex {TARGET}.elf {TARGET}.hex") os.system(f"{OBJDUMP} -d {TARGET}.elf > {TARGET}.lst") tagets_list=[f"{TARGET}.bin",f"{TARGET}.hex",f"{TARGET}.lst",f"{TARGET}.map",f"{TARGET}.elf"] for item in tagets_list: if os.path.exists(item): shutil.move(item,f"{OUTPUT}/{item}")